您好我有一个简单的问题(看似简单)并将代码作为示例。所以我得到一个带有1个数字的列,而在第二个列中有许多与该数字相关联的数字(没有合并的单元格)。在第二列中,最后一个数字的底部有一个边框。如何在遇到此边框之前使用循环。数字的数量每次都不同..这就是为什么.. 在第二个循环中,我在想要结束循环的地方写了“first_BORDER”。
Sub border()
Dim mpd As Worksheet
Dim ins As Worksheet
Set mpd = Sheets("Sheet1")
Set ins = Sheets("CFM")
For i = 1 To 1500
For j = i To "first_BORDER"
ins.Cells(j + i-1, 17) = mpd.Cells(j + i-1, 17)
Next
Next
End Sub
答案 0 :(得分:0)
您可以使用此功能:
Sub border()
Dim mpd As Worksheet
Dim ins As Worksheet
Set mpd = Sheets("Sheet1")
Set ins = Sheets("CFM")
'checks if border has been reached
Dim flag As Boolean
For i = 1 To 1500
'For j = i To "first_BORDER"
j = 1
While flag = True
If Range(Cells(j + i - 1, 17), Cells(j + i - 1, 17)).Borders(xlEdgeBottom).LineStyle <> xlContinuous Then
ins.Cells(j + i - 1, 17) = mpd.Cells(j + i - 1, 17)
j = j + 1
Else
flag = False
End If
Wend
Next
End Sub
而不是使用for j = 1到'''我使用了而循环。每当找到边框时,标志值将更改为false。如果未找到边框,则j增加“1”。您可以使用宏录制器来找出此代码。您可以寻找特定类型的边框(厚,继续......),而不只是寻找边框。我在我的博客中写了一篇文章,解释了如何使用宏录制器来获取用于格式化的代码,Using the macro recorder to format cells and range
答案 1 :(得分:0)
Sub StopAtBorder()
Dim i As Long
Do
i = i + 1
Range("B" & i).Value = "Over the bottom"
Loop Until Range("B" & i).Borders(xlEdgeBottom).LineStyle <> xlNone
End Sub