Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2010, 16:56   #1
levohotnik
Пользователь
 
Регистрация: 07.02.2010
Сообщений: 25
По умолчанию Где ошибка в коде?

Private Sub CommandButton1_Click()
Dim st As Variant
Dim s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15 As Variant
Dim dat15, dat1, dat2, dat3, dat4, dat5, dat6, dat7, dat8, dat9, dat10, dat11, dat12, dat13, dat14 As Variant

dat1 = TextBox1
dat2 = TextBox2
dat3 = TextBox3
dat4 = TextBox4
dat5 = TextBox5
dat6 = TextBox6
dat7 = TextBox7
dat8 = TextBox8
dat9 = TextBox9
dat10 = TextBox10
dat11 = TextBox11
dat12 = TextBox12
dat13 = TextBox13
dat14 = TextBox14
dat31 = TextBox15
s1 = TextBox16
s2 = TextBox17
s3 = TextBox18
s4 = TextBox19
s5 = TextBox20
s6 = TextBox21
s7 = TextBox22
s8 = TextBox23
s9 = TextBox24
s10 = TextBox25
s11 = TextBox26
s12 = TextBox27
s13 = TextBox28
s14 = TextBox29
s15 = TextBox30

st = ActiveCell.Row

Cells(st, dat1 + 3) = s1
Cells(st, dat2 + 3) = s2
Cells(st, dat3 + 3) = s3
Cells(st, dat4 + 3) = s4
Cells(st, dat5 + 3) = s5
Cells(st, dat6 + 3) = s6
Cells(st, dat7 + 3) = s7
Cells(st, dat8 + 3) = s8
Cells(st, dat9 + 3) = s9
Cells(st, dat10 + 3) = s10
Cells(st, dat11 + 3) = s11
Cells(st, dat12 + 3) = s12
Cells(st, dat13 + 3) = s13
Cells(st, dat14 + 3) = s14
Cells(st, dat15 + 3) = s15

End Sub

при запуске выдает "Type mismatch (Error 13)"
levohotnik вне форума Ответить с цитированием
Старый 28.10.2010, 17:08   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Ошибка будет, если в одну из переменных dat15, dat1, dat2, dat3, dat4, dat5, dat6, dat7, dat8, dat9, dat10, dat11, dat12, dat13, dat14
попадёт ТЕКСТОВОЕ значение.

В вашем случае, достаточно в любой из текстбоксов 1...15 поставить букву или пробел - и всё, макрос вылетит с ошибкой
(в строке Cells(st, datXX + 3) = sXX второй аргумент - datXX + 3 - будет текстовой строкой, а не числом)

Попробуйте так - ошибки не будет:
(одной строкой кода записать значения сразу во все ячейки)
Cells(st, 4).resize(,15).value = array(s1,s2,s3,s4, ..... ,s14,s15)

Последний раз редактировалось EducatedFool; 28.10.2010 в 17:10.
EducatedFool вне форума Ответить с цитированием
Старый 28.10.2010, 17:21   #3
levohotnik
Пользователь
 
Регистрация: 07.02.2010
Сообщений: 25
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Попробуйте так - ошибки не будет:
(одной строкой кода записать значения сразу во все ячейки)
Cells(st, 4).resize(,15).value = array(s1,s2,s3,s4, ..... ,s14,s15)
Да, так ошибки не выдает.
Но у меня dat переменная определяемая пользователем и в зависимости от ее значения определяется ячейка, в которую происходит запись значения S.

А в Вашем случае запись происходит по порядку начиная с первой.
Это не подходит, к сожалению.
levohotnik вне форума Ответить с цитированием
Старый 28.10.2010, 17:30   #4
levohotnik
Пользователь
 
Регистрация: 07.02.2010
Сообщений: 25
По умолчанию

Ребята, спасибо, я нашел ответ сам!
последняя часть программы:

If dat1 <> "" Then Cells(st, dat1 + 3) = s1
If dat2 <> "" Then Cells(st, dat2 + 3) = s2
If dat3 <> "" Then Cells(st, dat3 + 3) = s3
If dat4 <> "" Then Cells(st, dat4 + 3) = s4
If dat5 <> "" Then Cells(st, dat5 + 3) = s5
If dat6 <> "" Then Cells(st, dat6 + 3) = s6
If dat7 <> "" Then Cells(st, dat7 + 3) = s7
If dat8 <> "" Then Cells(st, dat8 + 3) = s8
If dat9 <> "" Then Cells(st, dat9 + 3) = s9
If dat10 <> "" Then Cells(st, dat10 + 3) = s10
If dat11 <> "" Then Cells(st, dat11 + 3) = s11
If dat12 <> "" Then Cells(st, dat12 + 3) = s12
If dat13 <> "" Then Cells(st, dat13 + 3) = s13
If dat14 <> "" Then Cells(st, dat14 + 3) = s14
If dat15 <> "" Then Cells(st, dat15 + 3) = s15
levohotnik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интерполяционный полином ньютона-где то ошибка в коде DiGris Общие вопросы C/C++ 1 04.05.2010 20:45
Где ошибка в коде? ilgar-90 Общие вопросы Delphi 2 08.02.2010 09:04
Не могу понять где ошибка в коде SeRhy Общие вопросы C/C++ 5 20.09.2009 13:10
Где ошибка в моем коде? artemavd БД в Delphi 12 22.09.2008 14:28
Где ошибка в коде? Македонский Общие вопросы Delphi 16 10.09.2007 15:45