Работа с массивами VBA Excel

Я разрабатываю макрос, чтобы исключить пустые строки из листа, который используется для ввода индивидуальных заказов. Допустим, что строки 7,8,9 и 12 имеют содержимое. Я хочу переместить содержимое строки 12 в строку 10.

До сих пор я нашел последнюю занятую строку в столбце c, а затем определил, является ли ячейка в строке в столбце e пустой или нет.

Теперь я хочу поместить значение в массив либо 0 (пустой), либо 1 (занятый). Я получаю ошибку (объект требуется) в строке кода, которая устанавливает значение камней (1) в 1 или 0.

Что происходит не так?

Dim ws As Worksheet Dim rng1 As Range Set ws = Sheets("Belmont") Set rng1 = ws.Columns("c").Find("*", ws.[c1], xlValues, , xlByRows, xlPrevious) Dim zen As String zen = rng1.Address(0, 0) Range(zen).Select Set ruby = Window.ActiveCell.Row - 11 Dim stones() As Boolean ReDim stones(1 To ruby) If IsEmpty(ActiveCell.Offset(2, 0)) Then Set stones(1) = 0 Else Set stones(1) = 1 End If msg55 = MsgBox(stones(1), vbDefaultButton1, "Gekko") 

Мое предположение состоит в том, что вы делаете это для обучения, а не из практичности:

Вы можете массивы VBA google и получить множество материалов по этому вопросу. Я бы начал здесь: http://www.cpearson.com/excel/vbaarrays.htm

Вы бы объявили свой массив следующим образом:

 Dim stones(1 To 10) As Double 

Вам придется проходить через каждую ячейку вашего диапазона. Вы также можете Google, как это сделать:

Цикл через каждую ячейку в диапазоне ячеек при задании объекта Range

Вы можете установить значение 5-го элемента в массиве равным 10:

 stones(5) = 10 

Кажется, вам нужно сделать некоторые базовые учебники по программированию VBA. Вы можете начать здесь:

http://www.mrexcel.com/forum/excel-questions/667818-tutorials-excel-macros-visual-basic-applications.html

Если вы пытаетесь избавиться от пустых ячеек в столбце C «Belmont», то это должно сработать для вас:

 Sub tgr() Dim rngBlanks As Range With Sheets("Belmont").Range("C1", Sheets("Belmont").Cells(Rows.Count, "C").End(xlUp)) On Error Resume Next Set rngBlanks = .SpecialCells(xlCellTypeBlanks) On Error GoTo 0 If Not rngBlanks Is Nothing Then rngBlanks.EntireRow.Delete End With Set rngBlanks = Nothing End Sub 

Если вы хотите удалить все строки, в которых столбец C пуст, тогда:

 Sub dural() Dim r As Range Set r = Range("C:C").Cells.SpecialCells(xlCellTypeBlanks).EntireRow r.Delete End Sub 

выполнит это без зацикливания.

Interesting Posts

Apache POI для Excel: установка типа ячейки для «текста» для всего столбца

Как импортировать zps-сервер, размещенный в Интернете, в Excel

деактивировать пользовательскую форму Excel VBA

Удаление всех строк, содержащих определенный текст на нескольких листах

Excel Удалить десятичные места

Внешняя таблица не соответствует ожидаемой ошибке формата в сборке выпусков c #

Совместимость цветов SSRS и Excel

Использование браузера Chrome вместо InternetExplorer.Application

Циклические кнопки в tkinter и назначение функций

Вставьте значение ячейки во все пустые ячейки ниже, затем перейдите к новому значению, чтобы повторить процесс в макросах Excel VBA

Excel & PowerShell – ВставкаСпециальная ошибка с помощью VLOOKUP

Как использовать vb.net для запуска Xpath во встроенном XML-файле в надстройке Excel?

Вложенный список в excel

Excel vba macro для автоматического скачивания файла, когда он добавлен на сайт Sharepoint

Не удалось найти правильную ошибку ссылки библиотеки файлов excel

Давайте будем гением компьютера.