Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Не хочет записывать массив "Expected array" - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не хочет записывать массив "Expected array" (Макросы/Sub)
Не хочет записывать массив "Expected array"
Roman777 Дата: Понедельник, 13.04.2015, 17:21 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Добрый день!
Вроде всё просто, где-то, наверное, небольшая ошибка. Но никак не могу понять что не так:
Говорит "compile error: expected array" на строку
[vba]
Код
ReDim Articuls(i1_n)
[/vba]
в следующем макросе:
[vba]
Код
Sub Вставка_Фото_с_первого_листа_в_файл()
Dim i As Long, i1 As Long
Dim sht As Worksheet
Dim NameRazdel As String
Dim Stolbec As Integer, Stolbec2 As Integer
Dim Articuls As String, Fotos As String
Dim kol As Long

NameRazdel = InputBox("Введите наименование раздела", "Наименование раздела", "Розетки и выключатели.")
Stolbec = InputBox("Введите номер столбца, в котором необходимо добавить данные", "Столбец редактирования данных", "8")
Stolbec2 = InputBox("Введите номер столбца на 1м листе, откуда извлекаем данные", "Столбец извлекаемых данных", "10")
Time_1 = Timer
i1_n = Worksheets(1).Cells(Rows.Count, 3).End(xlUp).Row
ReDim Articuls(i1_n)
ReDim Fotos(i1_n)
For i1 = 1 To i1_n
Articuls(i1) = Worksheets(1).Cells(i1, 3)
Fotos(i1) = Worksheets(1).Cells(i1, Stolbec2)
Next i1
For Each sht In ActiveWorkbook.Worksheets
If sht.Cells(1, 1) = NameRazdel Then
Application.ScreenUpdating = False
i_n = sht.Cells(Rows.Count, 3).End(xlUp).Row
   For i = 3 To i_n
      If sht.Cells(i, Stolbec) = "" Then
         For i1 = 1 To i1_n
            If sht.Cells(i, 3) = Articuls(i1) Then
               sht.Cells(i, Stolbec) = Fotos(i1)
               kol = kol + 1
            End If
         Next i1
      End If
   Next i
End If
Next sht
Application.ScreenUpdating = True
time_ = Time_1 - Timer
Time_delta = Format(time_ / 24 / 60 / 60, "hh\ч mm\м ss\с")
MsgBox ("Выполнено за " & Time_delta & Chr(13) & "Количество добавленных фотографий :" & kol)
End Sub
[/vba]


Много чего не знаю!!!!
 
Ответить
СообщениеДобрый день!
Вроде всё просто, где-то, наверное, небольшая ошибка. Но никак не могу понять что не так:
Говорит "compile error: expected array" на строку
[vba]
Код
ReDim Articuls(i1_n)
[/vba]
в следующем макросе:
[vba]
Код
Sub Вставка_Фото_с_первого_листа_в_файл()
Dim i As Long, i1 As Long
Dim sht As Worksheet
Dim NameRazdel As String
Dim Stolbec As Integer, Stolbec2 As Integer
Dim Articuls As String, Fotos As String
Dim kol As Long

NameRazdel = InputBox("Введите наименование раздела", "Наименование раздела", "Розетки и выключатели.")
Stolbec = InputBox("Введите номер столбца, в котором необходимо добавить данные", "Столбец редактирования данных", "8")
Stolbec2 = InputBox("Введите номер столбца на 1м листе, откуда извлекаем данные", "Столбец извлекаемых данных", "10")
Time_1 = Timer
i1_n = Worksheets(1).Cells(Rows.Count, 3).End(xlUp).Row
ReDim Articuls(i1_n)
ReDim Fotos(i1_n)
For i1 = 1 To i1_n
Articuls(i1) = Worksheets(1).Cells(i1, 3)
Fotos(i1) = Worksheets(1).Cells(i1, Stolbec2)
Next i1
For Each sht In ActiveWorkbook.Worksheets
If sht.Cells(1, 1) = NameRazdel Then
Application.ScreenUpdating = False
i_n = sht.Cells(Rows.Count, 3).End(xlUp).Row
   For i = 3 To i_n
      If sht.Cells(i, Stolbec) = "" Then
         For i1 = 1 To i1_n
            If sht.Cells(i, 3) = Articuls(i1) Then
               sht.Cells(i, Stolbec) = Fotos(i1)
               kol = kol + 1
            End If
         Next i1
      End If
   Next i
End If
Next sht
Application.ScreenUpdating = True
time_ = Time_1 - Timer
Time_delta = Format(time_ / 24 / 60 / 60, "hh\ч mm\м ss\с")
MsgBox ("Выполнено за " & Time_delta & Chr(13) & "Количество добавленных фотографий :" & kol)
End Sub
[/vba]

Автор - Roman777
Дата добавления - 13.04.2015 в 17:21
Rioran Дата: Понедельник, 13.04.2015, 17:26 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
Roman777, здравствуйте.

У Вас переменная объявлена как обычная строка:

[vba]
Код
Dim Articuls As String
[/vba]
Можете добавить скобок:

[vba]
Код
Dim Articuls() As String
[/vba]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеRoman777, здравствуйте.

У Вас переменная объявлена как обычная строка:

[vba]
Код
Dim Articuls As String
[/vba]
Можете добавить скобок:

[vba]
Код
Dim Articuls() As String
[/vba]

Автор - Rioran
Дата добавления - 13.04.2015 в 17:26
Roman777 Дата: Понедельник, 13.04.2015, 17:28 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Rioran, hands спасибо большое, что-то я в упор не видел этого)))


Много чего не знаю!!!!
 
Ответить
СообщениеRioran, hands спасибо большое, что-то я в упор не видел этого)))

Автор - Roman777
Дата добавления - 13.04.2015 в 17:28
Kuzmich Дата: Понедельник, 13.04.2015, 17:34 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 712
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
Цитата
Dim Articuls As String, Fotos As String

Объявляйте как массив
 
Ответить
Сообщение
Цитата
Dim Articuls As String, Fotos As String

Объявляйте как массив

Автор - Kuzmich
Дата добавления - 13.04.2015 в 17:34
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не хочет записывать массив "Expected array" (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!