powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / ошибка type mismatch
10 сообщений из 10, страница 1 из 1
ошибка type mismatch
    #34473773
tosh17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток

Такая проблемка когда макрос запускается с кнопки из 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

Заранее благодарен
...
Рейтинг: 0 / 0
ошибка type mismatch
    #34473802
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выкладывай весь лист.
+ напиши вверху модуля Option Explicit и сделай все, о чем будет предупреждать компилятор, тогда все будет работать.
...
Рейтинг: 0 / 0
ошибка type mismatch
    #34473805
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроспостим уважаемый. Второю тему убью.


Magnus
...
Рейтинг: 0 / 0
ошибка type mismatch
    #34474836
tosh17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
изменяюсь за вторую тему просто я это хотел в basic засунуть и промахнулся
...
Рейтинг: 0 / 0
ошибка type mismatch
    #34475160
tosh17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 :( я только начал разбирать байсик но разве в нем надо определять переменые?
...
Рейтинг: 0 / 0
ошибка type mismatch
    #34475275
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я имел в виду весь файл.у тебя на листе есть объекты и данные, они нужны для тестирования
...
Рейтинг: 0 / 0
ошибка type mismatch
    #34475282
tosh17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Туплю :)
...
Рейтинг: 0 / 0
ошибка type mismatch
    #34475468
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй адресс ячейки по другому указывать
Вместо
Код: plaintext
Cells( 4 , "L")
Либо
Код: plaintext
Cells( 4 ,  12 )
Либо
Код: plaintext
Range("L4")

Это насчёт авторошибка type mismatch

А вот отдельному ряду данных исходные данные присвоить можно по-моему только если он виден, т.е. если сейчас у него есть какие-то значения, иначе ошибку выдаст. Лучше по-моему сразу все диапазоны задать на листе а макросом только данные подставлять. Если дипазон меняется, то нужно в графике сослаться на именованный диапазон, а именованный дипазон сделать переменным, например с использованием функции СМЕЩ()
...
Рейтинг: 0 / 0
ошибка type mismatch
    #34475841
tosh17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо огромное :)

да диапазоны каждый раз разные, про смещение почитаю
...
Рейтинг: 0 / 0
ошибка type mismatch
    #34475890
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tosh17спасибо огромное :)

да диапазоны каждый раз разные, про смещение почитаю

Выложил график на основании именованных диапазонов! Как пример! График не мой, кто-то выкладывал, так что на авторство не претендую!
Там в меню вставка - имя - присвоить можно посмотреть как присваиваются имена дипазонам
А в графике исходные данные - вкладка ряды (именно ряды) посмотреть как задаётся диапазон рядов

Это всё для примера может у Вас лучше получится!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / ошибка type mismatch
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]