0

我正在开发一个宏来消除用于输入自定义订单的工作表中的空白行。假设第 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")
4

3 回答 3

2

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

你可以在谷歌上搜索 VBA 数组并获得大量关于该主题的材料。我将从这里开始: 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

于 2013-08-19T15:08:10.100 回答
1

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

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

将在不循环的情况下完成此操作。

于 2013-08-19T15:21:59.407 回答
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
于 2013-08-19T15:13:26.260 回答