powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / error '13'
6 сообщений из 6, страница 1 из 1
error '13'
    #34469870
Anna82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Private Sub CommandButton1_Click()
k = InputBox("Введите имя первого столбца:")
t = InputBox("Введите имя второго столбца:")
ActiveCell.Formula = "=Correl(Лист1!k" + 2 + ":k" + Trim(Str(m)) + ",Лист1!t" + 2 + ":t" + Trim(Str(m)) + ")"
End Sub

на этот код выдает ошибку:

Run-time error '13'
Type mismasth

не могу понять в чем ошибка, подскажите, пожалуйста
...
Рейтинг: 0 / 0
error '13'
    #34469900
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неявное преобразование строковых переменных в целочисленные.
Вместо + используй &



Magnus
...
Рейтинг: 0 / 0
error '13'
    #34469904
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых при конкатенации строк лучше пользоваться & нежели +.
Во вторых кавычки расставлены без всякого смысла - результат всегда будет =Correl(Лист1!k2:k,Лист1!t2:t)
В-третьих не видно, чтобы переменной m задавалось какое-то значение.
...
Рейтинг: 0 / 0
error '13'
    #34469990
Anna82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyВо-первых при конкатенации строк лучше пользоваться & нежели +.
Во вторых кавычки расставлены без всякого смысла - результат всегда будет =Correl(Лист1!k2:k,Лист1!t2:t)
В-третьих не видно, чтобы переменной m задавалось какое-то значение.
переменной ь задается знаечение в другом модуле:
m = Int(InputBox("Введите количество строк таблицы:"))
...
Рейтинг: 0 / 0
error '13'
    #34470566
asta97
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анна, когда вы в коде записываете формулы для ячеек, то
1) все числа преобразуем в строки Str(число).
2) Если k, t, m переменные, то вы их не вводите в строки, как у вас "k", вы работаете с символом k, а не значением переменной k.
3) Сравните то, что у вас есть, с этим.


Sub test()
k = InputBox("Введите имя первого столбца:")
t = InputBox("Введите имя второго столбца:")
m = InputBox("Введите номер конечной строки:")
ActiveCell.Formula = "=Correl(Лист1!" + k + Trim(Str(2)) + ":" + k + Trim(Str(m)) + ",Лист1!" + t + Trim(Str(2)) + ":" + t + Trim(Str(m)) + ")"

End Sub
...
Рейтинг: 0 / 0
error '13'
    #34470832
lena_####
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anna82

Может Вам подойдет такой вариант: вместо того, чтобы вводить имена столбцов, номера строк - просто выделить нужные диапазоны на листе.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Private Sub CommandButton1_Click()
  Dim X As Range, Y As Range
  On Error GoTo ErrHandler
  Set X = Application.InputBox(prompt:="Выделите первый диапазон:", Type:= 8 )
  Set Y = Application.InputBox(prompt:="Выделите второй диапазон:", Type:= 8 )
  'если нужно вернуть значение (коэфф. корреляции)
  'ActiveCell = WorksheetFunction.Correl(X, Y)
  'если нужно вернуть формулу
  ActiveCell.Formula = "=Correl(" & X.Address & "," & Y.Address & ")"
  Exit Sub
  
ErrHandler:
  Select Case Err.Number
  Case  424 
    MsgBox "Необходимо выделить диапазон", vbExclamation, "Ошибка ввода данных"
  Case Else
    MsgBox "Произошла ошибка: " & Err.Number, vbExclamation, "Ошибка программы"
  End Select
End Sub

Если достаточно возвращать значение коэффициента корреляции (т.е. сама формула не нужна, а нужен только результат) то раскомментируйте строку
Код: plaintext
'ActiveCell = WorksheetFunction.Correl(X, Y)
и закомментируйте
Код: plaintext
ActiveCell.Formula = "=Correl(" & X.Address & "," & Y.Address & ")"
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / error '13'
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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