|
|
|
ошибка type mismatch
|
|||
|---|---|---|---|
|
#18+
Доброе время суток Такая проблемка когда макрос запускается с кнопки из exel то выскакивает ошибка type mismatch если поставить метку чтоб по шагам отлаживать функцию, то работает все нормально и ошибки не вываливается. также все нормально если закоментировать весь if вот код функции Sub graf() ii = Лист1.Cells(4, "L") jj = Лист1.Cells(5, "L") Лист2.касательная ThisWorkbook.Worksheets(2).ChartObjects(1).Activate ActiveChart.ChartArea.Select ActiveChart.SeriesCollection(1).XValues = "=Лист2!R" & Left(ii, Len(ii)) & "C5" + ":R" & Left(jj, Len(jj)) + "C5" ActiveChart.SeriesCollection(1).Values = "=Лист2!R" & Left(ii, Len(ii)) & "C2" + ":R" & Left(jj, Len(jj)) + "C2" ActiveChart.SeriesCollection(2).XValues = "=Лист2!R" & Left(ii, Len(ii)) & "C5" + ":R" & Left(jj, Len(jj)) + "C5" ActiveChart.SeriesCollection(2).Values = "=Лист2!R" & Left(ii, Len(ii)) & "C6" + ":R" & Left(jj, Len(jj)) + "C6" flag = Лист1.Cells(11, "L") If flag = 2 Then ThisWorkbook.Worksheets(2).ChartObjects(1).Activate ActiveChart.ChartArea.Select ActiveChart.SeriesCollection(3).XValues = "=Лист2!R" & Left(ii, Len(ii)) & "C5" + ":R" & Left(jj, Len(jj)) + "C5" ActiveChart.SeriesCollection(3).Values = "=Лист2!R" & Left(ii, Len(ii)) & "C7" + ":R" & Left(jj, Len(jj)) + "C7" End If Sheets("Лист2").Select Лист2.Range("F2:G9999").Select Selection.ClearContents End Sub Заранее благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 17:41:57 |
|
||
|
ошибка type mismatch
|
|||
|---|---|---|---|
|
#18+
выкладывай весь лист. + напиши вверху модуля Option Explicit и сделай все, о чем будет предупреждать компилятор, тогда все будет работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2007, 17:48:54 |
|
||
|
ошибка type mismatch
|
|||
|---|---|---|---|
|
#18+
изменяюсь за вторую тему просто я это хотел в basic засунуть и промахнулся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2007, 09:21:03 |
|
||
|
ошибка type mismatch
|
|||
|---|---|---|---|
|
#18+
Sub table() Sheets("Лист2").Select t = 2 j = Лист1.Cells(5, "C") tm = Лист1.Cells(3, "L") For i = 2 To j + 1 Лист2.Cells(i, "A") = Лист1.Cells(i + 4, "G") Лист2.Cells(i, "B") = Лист1.Cells(i + 4, "B") If tm >= Лист2.Cells(i, "A") Then Лист2.Cells(i, "c") = "-" Лист2.Cells(i, "D") = "-" Лист2.Cells(i, "E") = "-" t = t + 1 Else Лист2.Cells(i, "c") = Лист2.Cells(i, "A") - tm Лист2.Cells(i, "D") = Лист2.Cells(i, "c") / Лист2.Cells(i, "A") Лист2.Cells(i, "E") = Log(Лист2.Cells(i, "D")) / Log(10) End If Next Лист1.Cells(4, "L") = t Лист1.Cells(5, "L") = i End Sub Sub graf() Option Explicit ii = Лист1.Cells(4, "L") jj = Лист1.Cells(5, "L") Лист2.касательная ThisWorkbook.Worksheets(2).ChartObjects(1).Activate ActiveChart.ChartArea.Select ActiveChart.SeriesCollection(1).XValues = "=Лист2!R" & Left(ii, Len(ii)) & "C5" + ":R" & Left(jj, Len(jj)) + "C5" ActiveChart.SeriesCollection(1).Values = "=Лист2!R" & Left(ii, Len(ii)) & "C2" + ":R" & Left(jj, Len(jj)) + "C2" ActiveChart.SeriesCollection(2).XValues = "=Лист2!R" & Left(ii, Len(ii)) & "C5" + ":R" & Left(jj, Len(jj)) + "C5" ActiveChart.SeriesCollection(2).Values = "=Лист2!R" & Left(ii, Len(ii)) & "C6" + ":R" & Left(jj, Len(jj)) + "C6" flag = Лист1.Cells(11, "L") If flag = 2 Then ThisWorkbook.Worksheets(2).ChartObjects(1).Activate ActiveChart.ChartArea.Select ActiveChart.SeriesCollection(3).XValues = "=Лист2!R" & Left(ii, Len(ii)) & "C5" + ":R" & Left(jj, Len(jj)) + "C5" ActiveChart.SeriesCollection(3).Values = "=Лист2!R" & Left(ii, Len(ii)) & "C7" + ":R" & Left(jj, Len(jj)) + "C7" End If Sheets("Лист2").Select Лист2.Range("F2:G9999").Select Selection.ClearContents End Sub Sub касательная() t = 0 x0 = Лист1.Cells(8, "K") x1 = Лист1.Cells(8, "L") Pl = Лист1.Cells(8, "M") Q = Лист1.Cells(8, "N") For i = Лист1.Cells(4, "L") To Лист1.Cells(5, "L") If Лист2.Cells(i, "E") < x0 Then j = i Else i = Лист1.Cells(5, "L") End If Next j = j + 1 For i = j To Лист1.Cells(5, "L") If Лист2.Cells(i, "E") < x1 Then t = t + 1 Else i = Лист1.Cells(5, "L") End If Next s = 0 i = j + t Do While i > j s = s + 1 r = Лист2.Cells(i, "E") p = Лист2.Cells(i, "B") Лист4.Cells(s, "A") = r Лист4.Cells(s, "B") = p i = i - 2 * s Loop k = 0 b = 0 Sheets("Лист4").Select Лист4.Range("I1").Select ActiveCell.FormulaR1C1 = "=LINEST(R1C[-7]:R" & Left(s, Len(s)) + "C[-7]" + ",R1C[-8]:R" & Left(s, Len(s)) + "C[-8])" Sheets("Лист2").Select k = Лист4.Cells(1, "I") b = Лист4.Cells(2, "I") Лист2.Cells(3, "L") = k Лист2.Cells(3, "M") = b For i = Лист1.Cells(4, "L") To Лист1.Cells(5, "L") - 1 Лист2.Cells(i, "F") = k * Лист2.Cells(i, "E") + b Next Лист2.Cells(3, "N") = 0.813 * (b - Pl) / k Лист2.Cells(3, "O") = 2.18 * Q / k flag = Лист1.Cells(11, "L") If flag = 2 Then t = 0 x0 = Лист1.Cells(9, "K") x1 = Лист1.Cells(9, "L") Pl = Лист1.Cells(9, "M") Q = Лист1.Cells(9, "N") For i = Лист1.Cells(4, "L") To Лист1.Cells(5, "L") If Лист2.Cells(i, "E") < x0 Then j = i Else i = Лист1.Cells(5, "L") End If Next j = j + 1 For i = j To Лист1.Cells(5, "L") If Лист2.Cells(i, "E") < x1 Then t = t + 1 Else i = Лист1.Cells(5, "L") End If Next s = 0 i = j + t Do While i > j s = s + 1 r = Лист2.Cells(i, "E") p = Лист2.Cells(i, "B") Лист4.Cells(s, "A") = r Лист4.Cells(s, "B") = p i = i - 2 * s Loop k = 0 b = 0 Sheets("Лист4").Select Лист4.Range("I1").Select ActiveCell.FormulaR1C1 = "=LINEST(R1C[-7]:R" & Left(s, Len(s)) + "C[-7]" + ",R1C[-8]:R" & Left(s, Len(s)) + "C[-8])" Sheets("Лист2").Select k = Лист4.Cells(1, "I") b = Лист4.Cells(2, "I") Лист2.Cells(4, "L") = k Лист2.Cells(4, "M") = b Лист2.Cells(4, "N") = 0.813 * (b - Pl) / k Лист2.Cells(4, "O") = 2.18 * Q / k For i = Лист1.Cells(4, "L") To Лист1.Cells(5, "L") - 1 Лист2.Cells(i, "G") = k * Лист2.Cells(i, "E") + b Next End If End Sub это весь лист Побывал вставлять Option Explicit на первой же строке функции граф вылетает ошибка Variable not defined :( я только начал разбирать байсик но разве в нем надо определять переменые? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2007, 10:46:45 |
|
||
|
ошибка type mismatch
|
|||
|---|---|---|---|
|
#18+
я имел в виду весь файл.у тебя на листе есть объекты и данные, они нужны для тестирования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2007, 11:14:30 |
|
||
|
ошибка type mismatch
|
|||
|---|---|---|---|
|
#18+
Попробуй адресс ячейки по другому указывать Вместо Код: plaintext Код: plaintext Код: plaintext Это насчёт авторошибка type mismatch А вот отдельному ряду данных исходные данные присвоить можно по-моему только если он виден, т.е. если сейчас у него есть какие-то значения, иначе ошибку выдаст. Лучше по-моему сразу все диапазоны задать на листе а макросом только данные подставлять. Если дипазон меняется, то нужно в графике сослаться на именованный диапазон, а именованный дипазон сделать переменным, например с использованием функции СМЕЩ() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2007, 11:57:18 |
|
||
|
ошибка type mismatch
|
|||
|---|---|---|---|
|
#18+
спасибо огромное :) да диапазоны каждый раз разные, про смещение почитаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2007, 13:21:56 |
|
||
|
ошибка type mismatch
|
|||
|---|---|---|---|
|
#18+
tosh17спасибо огромное :) да диапазоны каждый раз разные, про смещение почитаю Выложил график на основании именованных диапазонов! Как пример! График не мой, кто-то выкладывал, так что на авторство не претендую! Там в меню вставка - имя - присвоить можно посмотреть как присваиваются имена дипазонам А в графике исходные данные - вкладка ряды (именно ряды) посмотреть как задаётся диапазон рядов Это всё для примера может у Вас лучше получится! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2007, 13:30:39 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=34475275&tid=2183102]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 405ms |

| 0 / 0 |
