使用数组VBA Excel

我正在开发一个macros,以消除用于input自定义订单的工作表中的空白行。 可以说,行7,8,9和12有内容。 我想将第12行的内容移到第10行。

到目前为止,我已经find列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") 

我的假设是,你这样做是为了学习而不是实践:

你可以谷歌VBAarrays,并获得关于这个问题的过多的材料。 我会从这里开始: http : //www.cpearson.com/excel/vbaarrays.htm

你会像这样声明你的数组:

 Dim stones(1 To 10) As Double 

你将不得不遍历你的范围内的每个单元格。 你可以谷歌如何做到这一点:

当给定一个Range对象时,循环遍历单元格区域中的每个单元格

您可以将数组中第5个元素的值设置为10,如下所示:

 stones(5) = 10 

这真的好像你需要做一些基本的VBA编程教程。 你可以从这里开始:

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

如果您试图摆脱“贝尔蒙”栏C中的空白单元格,那么这应该适用于您:

 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 

将无需循环即可完成。