使用数组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编程教程。 你可以从这里开始:
如果您试图摆脱“贝尔蒙”栏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
将无需循环即可完成。