我正在开发一个宏来消除工作表中用于输入自定义订单的空白行。让我们说第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")
答案 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编程教程。你可以从这里开始:
答案 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
将在不循环的情况下完成此任务。