Страницы: 1
RSS
Нужна помощь по макросу. занесение данных ячеек в массив.
 
Sub massive()  
Dim cellValue() As String  
Dim i As Integer  
Dim cellde As Integer  
 
cellde = ActiveWorkbook.Sheets("лист").Range.Count  
ReDim cellValue(1 To cellde)  
For i = 1 To cellde  
   cellValue(i) = ActiveWorkbook.Sheets("лист1").Range(i).Value  
   MsgBox cellValue(i)  
Next i  
End Sub  
 
 
Помогите, пожалуйста с программой. Выдает ошибку 450. Подскажите, в чем моя ошибка (чтобы больше я ее не повторил) и как надо правильно  сделать.
 
1. ActiveWorkbook.Sheets("лист").Range.Count  
В каком диапазоне посчитывать ячейки, вы не указали.  
можно, к примеру, так: cellde = ActiveWorkbook.Sheets("лист1").Range("a1:a100").Count  
Но в данном случае проще сразу написать cellde =100  
 
 
2. cellValue(i) = ActiveWorkbook.Sheets("лист1").Range(i).Value  
Запись Range(i)  - некорректна.  
Можно сделать так: cellValue(i) = ActiveWorkbook.Sheets("лист1").Cells(i, 1).Value  
 
 
3. Если устроить двумерный массив, то макрос можно упростить:  
 
Sub massive()  
   cellValue = Sheets("лист1").Range("a1:a100").Value    ' вот и весь код...  
 
   For i = LBound(cellValue) To UBound(cellValue)  
       Debug.Print cellValue(i, 1)   ' вывод результата  
   Next i  
End Sub  
 
 
или так    
 
Sub massive()  
   cellValue = Sheets("лист1").UsedRange.Value  
   ' теперь  cellValue - двумерный массив,  
   ' в который попали значения из всей используемой области листа  
End Sub
 
{quote}{login=EducatedFool}{date=22.02.2010 11:51}{thema=}{post}1. ActiveWorkbook.Sheets("лист").Range.Count  
В каком диапазоне посчитывать ячейки, вы не указали.  
можно, к примеру, так: cellde = ActiveWorkbook.Sheets("лист1").Range("a1:a100").Count  
Но в данном случае проще сразу написать cellde =100  
 
 
2. cellValue(i) = ActiveWorkbook.Sheets("лист1").Range(i).Value  
Запись Range(i)  - некорректна.  
Можно сделать так: cellValue(i) = ActiveWorkbook.Sheets("лист1").Cells(i, 1).Value  
 
 
3. Если устроить двумерный массив, то макрос можно упростить:  
 
Sub massive()  
   cellValue = Sheets("лист1").Range("a1:a100").Value    ' вот и весь код...  
 
   For i = LBound(cellValue) To UBound(cellValue)  
       Debug.Print cellValue(i, 1)   ' вывод результата  
   Next i  
End Sub  
 
 
или так    
 
Sub massive()  
   cellValue = Sheets("лист1").UsedRange.Value  
   ' теперь  cellValue - двумерный массив,  
   ' в который попали значения из всей используемой области листа  
End Sub{/post}{/quote}  
 
 
Спасибо. сейчас попробую.
 
{quote}{login=EducatedFool}{date=22.02.2010 11:51}{thema=}{post}1. ActiveWorkbook.Sheets("лист").Range.Count  
В каком диапазоне посчитывать ячейки, вы не указали.  
можно, к примеру, так: cellde = ActiveWorkbook.Sheets("лист1").Range("a1:a100").Count  
Но в данном случае проще сразу написать cellde =100  
 
 
2. cellValue(i) = ActiveWorkbook.Sheets("лист1").Range(i).Value  
Запись Range(i)  - некорректна.  
Можно сделать так: cellValue(i) = ActiveWorkbook.Sheets("лист1").Cells(i, 1).Value  
 
 
3. Если устроить двумерный массив, то макрос можно упростить:  
 
Sub massive()  
   cellValue = Sheets("лист1").Range("a1:a100").Value    ' вот и весь код...  
 
   For i = LBound(cellValue) To UBound(cellValue)  
       Debug.Print cellValue(i, 1)   ' вывод результата  
   Next i  
End Sub  
 
 
или так    
 
Sub massive()  
   cellValue = Sheets("лист1").UsedRange.Value  
   ' теперь  cellValue - двумерный массив,  
   ' в который попали значения из всей используемой области листа  
End Sub{/post}{/quote}  
 
 
А можно место диапазона  "Range("a1:a100")" вставить переменную к которой был применен метод Count? И как можно реализовать... я  этим методом плохо владею, хотя он мне практический всегда нужен и понадобится в другом макросе. Подскажите как можно его реализовать на конкретной задаче и если не сложно пояснить почему именно так.
 
Под диапазон я имел, введу "а1:а100" - это для универсальности
 
cellde = ActiveWorkbook.Sheets("лист").Cells(Rows.Count, 1).End(xlUp).Row  
 
поиск последней заполненной ячеки в столбце.  
cells(строка,столбец)
 
{quote}{login=}{date=22.02.2010 12:51}{thema=}{post}cellde = ActiveWorkbook.Sheets("лист").Cells(Rows.Count, 1).End(xlUp).Row  
 
поиск последней заполненной ячеки в столбце.  
cells(строка,столбец){/post}{/quote}  
 
 
Большое спасибо за помощь. попробую на предмет работоспособности.
 
Что-то у меня форум глючит, если ждёте от меня ответ в теме про массив - напрасно, она у меня больше не открывается :(
 
{quote}{login=Hugo}{date=22.02.2010 04:04}{thema=Re: }{post}Что-то у меня форум глючит, если ждёте от меня ответ в теме про массив - напрасно, она у меня больше не открывается :({/post}{/quote}  
Hugo, у движка форума недостаток - почистите куки и все пройдет :)
 
Вот спасибо, и впрямь заработало!!!
Страницы: 1
Читают тему
Наверх
Loading...