Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > команда Microsoft.VisualBasic дает ошибку 424


Автор: dobbro 12.8.2011, 10:11
вот кусок кода:
Код

Do While Cells(x, 1).Value <> ""
  artikul_old = Cells(x, 1)                                                        'Считываем 1-ый артикул
  i = 1
  artikul_new = Microsoft.VisualBasic.Left(artikul_old, 7)       'Формируем готовый артикул на новый лист (без цвета и размера)
  Size(i) = Microsoft.VisualBasic.Right(artikul_old, 2)              'Начинаем формировать строку с размерами
  Color(i) = Microsoft.VisualBasic.Mid(artikul_old, 8, 2)           'Начинаем формировать строку с цветами

ком-р начинает ругаться при дебаге на строку:
Код

artikul_new = Microsoft.VisualBasic.Left(artikul_old, 7)

переменная artikul_new объявлена строкой. В чем дело понять не могу.
Заранее спасибо.

Автор: dorogoyIV 12.8.2011, 11:02
artikul_old должна быть String, а у тебя как?

Автор: dobbro 12.8.2011, 11:24
Цитата(dorogoyIV @ 12.8.2011,  11:02)
artikul_old должна быть String, а у тебя как?

и у меня string

Добавлено через 44 секунды
Код

Dim artikul_old As String

Автор: dorogoyIV 12.8.2011, 15:35
в справке по этой ошибке написано: Use the Set statement when assigning an object reference.
попробуй что то типа: 
Код

Set artikul_new = ...

Автор: dobbro 12.8.2011, 15:39
Код

Set artikul_new = Microsoft.VisualBasic.Left(artikul_old, 7)

дает ту же самую ошибку и именно на ней

Автор: dorogoyIV 12.8.2011, 15:50
ну выложи весь код, если возможно...
посмотрим...
(кстати, я про VBA говорил...)

Автор: dobbro 12.8.2011, 16:07
Так, нашелся косяк. Microsoft.VisualBasic - в топку
Оставляем только Left(artikul_old, 7) и все прекрасненько работает!
Остается только понять как мне массив строк выпихнуть в 1 ячейку... Никто не подскажет?

Автор: dorogoyIV 13.8.2011, 11:59
Цитата(dobbro @  12.8.2011,  16:07 Найти цитируемый пост)
Остается только понять как мне массив строк выпихнуть в 1 ячейку...

как то не понятно - что нужно? 

Автор: ViterAlex 13.8.2011, 18:19
Цитата(dobbro @ 12.8.2011,  16:07)
…как мне массив строк выпихнуть в 1 ячейку…

Объединить строковый массив командой Join

Автор: Staruha 13.8.2011, 23:38
Собери в переменную (сцепить &) а потом в ячейку 

Автор: dorogoyIV 14.8.2011, 00:25
Код

Sub UniteStrings()
 Dim i, j, num
 i = 1
 j = 1
 num = 1
 Dim s() As String ' объявление массива
 
 While Cells(i, j) <> ""
  While Cells(i, j) <> ""
   ReDim Preserve s(1 To num) ' изменение размера массива с сохранением содержимого
   s(num) = Cells(i, j)
   j = j + 1
   num = num + 1
  Wend
  i = i + 1
 Wend
 
 Dim ss As String
 ss = Join(s, "#")
 MsgBox ss
 
 'Cells(?, ?) = ss
End Sub

Автор: dobbro 15.8.2011, 08:33
Спасибо всем огромное! Если что, обращусь еще!

Автор: Данкинг 15.8.2011, 09:59
А что такое вообще "Microsoft.VisualBasic "? smile 

Автор: dobbro 15.8.2011, 11:40
Цитата

А что такое вообще "Microsoft.VisualBasic "?  

Да м...к какой то в книжке написал. Я ж не знал, что ему доверять нельзя, а в VBA я тока 2 прогу пишу. Дурацикй все таки язык... Ничего личного, просто мнение. До того на паскале, с++, php, html (тоже специфический, кстати) писал... но тут... зато интересно что то новое узнавать...

Автор: Данкинг 15.8.2011, 15:35
Цитата(dobbro @  15.8.2011,  12:40 Найти цитируемый пост)
Да м...к какой то в книжке написал.

Он не м-к, а клоун: я реально поржал, когда в твоём коде это прочитал. smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)