【发布时间】:2018-08-01 12:49:39
【问题描述】:
我有一个名为 Sheet3 的 Excel 表,我将单元格合并成 11 x 6 的大方块,然后将它们排成一行。这些块中有 12 个彼此相隔 7 个单元。我定义了每个块的名称,“Car_1”到“Car_12”。我正在尝试编写一个代码块,在其中我可以使用 Car_1 到 Car_12 块创建一个数组,我可以遍历每个块并确定每个块右侧是否写有文本,如果有则 ID右侧的那个块可以打印在工作表上其他地方的单元格中(总共有 12 个块,因此输出范围可以在单元格 "C2" 到 "C13" )相反,如果块中没有写入文本在被关注的右侧没有输出,它只会转到下一个块,直到所有块都被循环通过。然而,无论哪个区块结束,都需要为它采取不同的行动。因此,当程序查看该块时,当它后面的任何点都没有带有文本的块时,它将打印“Right End”而不是 ID。这是我到目前为止所拥有的,但它当然不起作用:
Sub Code()
Dim wb As Workbook
Dim ws As Worksheet
Dim TxtRng As Range
Set wb = ActiveWorkbook
Set ws = wb.Sheets("Sheet3")
Dim Cars(12)
i = 1
For Cars = 1 To 12
If Application.WorksheetFunction.IsText(Range("Car_(i)")) Then
Set TxtRng = ws.Range("C2")
TxtRng.Value = "Yes" 'Car(i) ----> ID
Else
TxtRng.Value = "" 'Blank
If Application.WorksheetFunction.IsText(Range("Car_12")) Then
Set TxtRng = ws.Range("C13")
TxtRng.Value = "Right End"
Next i
End If
End If
End Sub
在我的代码中,我只关注在查看 Car_12 时会发生什么,而不是在块右侧没有带有文本的块的任何地方。
【问题讨论】:
-
有必要使用合并单元格吗?使用未合并的单元格要容易得多......无论如何,您已经编写的代码的确切问题是什么?它没有做什么,你正在努力实现什么?
-
是的,遗憾的是,我仅限于使用合并单元格,而且我是 VBA 新手,所以我只需要检查我的语法以及如何编写代码来处理最后的块
-
我基本上需要知道哪个块在被循环通过的每个块的右侧:
-
就像在单元格“B2”到“B13”中会列出 1 到 12,单元格“C2”到“C13”会有输出(单元格中每个数字的右侧是什么B2 到 B13) 它实际上应该是 1 --> 2、2 --> 3 等等。除非我们说块 Car_3 没有文本,那么当在循环中查看 Car_2 时,Car_4 将是输出
-
您是否特别想使用
IsText- 即如果块中有一个数字,它将被忽略?还是只是想检查块值的长度是否 > 0?