|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.10.2010, 16:56 | #1 |
Пользователь
Регистрация: 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)" |
28.10.2010, 17:08 | #2 |
Программист VBA
СуперМодератор
Регистрация: 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)
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 28.10.2010 в 17:10. |
28.10.2010, 17:21 | #3 | |
Пользователь
Регистрация: 07.02.2010
Сообщений: 25
|
Цитата:
Но у меня dat переменная определяемая пользователем и в зависимости от ее значения определяется ячейка, в которую происходит запись значения S. А в Вашем случае запись происходит по порядку начиная с первой. Это не подходит, к сожалению. |
|
28.10.2010, 17:30 | #4 |
Пользователь
Регистрация: 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 |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Интерполяционный полином ньютона-где то ошибка в коде | 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 |