使用循环直到它遇到单元格边框

时间:2014-03-03 07:03:13

标签: vba loops border

您好我有一个简单的问题(看似简单)并将代码作为示例。所以我得到一个带有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

2 个答案:

答案 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