使用数组VBA Excel

时间:2013-08-19 14:46:56

标签: arrays excel vba elements

我正在开发一个宏来消除工作表中用于输入自定义订单的空白行。让我们说第7,8,9和12行有内容。我想将第12行的内容移动到第10行。

到目前为止,我已找到列c中最后一个占用的行,然后确定列e中行中的单元格是否为空白。

现在我想将一个值放入数组0(空白)或1(占用)。我在将stone(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")

3 个答案:

答案 0 :(得分:2)

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

你可以谷歌VBA阵列,并获得大量关于这个主题的材料。我会从这里开始: http://www.cpearson.com/excel/vbaarrays.htm

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

Dim stones(1 To 10) As Double

您将不得不遍历范围内的每个单元格。谷歌也可以这样做:

Loop through each cell in a range of cells when given a Range object

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

stones(5) = 10

看起来你需要做一些基本的VBA编程教程。你可以从这里开始:

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

答案 1 :(得分:1)

如果你试图摆脱'Belmont'专栏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

答案 2 :(得分:1)

如果要删除列 C 为空的所有行,则:

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

将在不循环的情况下完成此任务。