VBA 2007 - 简易变量任务 - 复制&范围

时间:2014-12-04 14:42:10

标签: excel vba excel-vba

为打扰你的思想而道歉,但我有qq:

任务: 有一个列我需要找到一个单词(“Kermit”)。然后从“Kermit”中选择单元格直到最后一个单元格。比改变颜色就是这样。

问题: 我想在第一个变量中使用单词Kermit,第二个变量用于最终的最终选择。 我真的很困惑VBA&变量.. 任何的想法?谢谢你提前!

Sub Muppets()
    Dim Kermit As Range 
    Set Kermit = Cells.Find("Kermit")

    Dim ooo As Range

    Set ooo = Range((Kermit), Range("Kermit").End(xlDown).Offset(-1, 0)).Select

    ooo.Interior.Color = rgbLightBlue
End Sub

2 个答案:

答案 0 :(得分:0)

这应该做你想要的。会找到' Kermit'在指定的工作表(Kermit)中,然后只将那一列从该点设置为倒数第二行到您的颜色。

    Sub Button1_Click()
    Dim LastRow     As Long
    Dim LastCol     As Long
    Dim rng1        As Range
    Dim rng2        As Range
    Dim rng3        As Range

    With ActiveWorkbook.Sheets("Kermit")
        LastRow = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        LastCol = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).column
        Set rng1 = .Cells.Find("Kermit", [A1], xlFormulas, xlPart, , , False)
        If Not rng1 Is Nothing Then
            Set rng2 = Rows(LastRow)        'Range(LastRow, rng1.column)
            .Range(Cells(rng1.Row, rng1.column), Cells(LastRow - 1, rng1.column)).Select
        End If
    End With
    Selection.Interior.Color = rgbLightBlue

End Sub

答案 1 :(得分:-1)

我发现在这些情况下要将其分解。如果你可以使用' debug.print'这可以在你开始时提供帮助。

VBA中的range()函数采用起始和结束地址。你有第一个:

Kermit.address

当我查看第二个地址时,我发现它是之前你所拥有的单元格。你的偏移应该是正的 - 这得到我的测试表上的范围:

range(Kermit.address,kermit.offset(1,0).End(xlDown).Address).Address

该功能就像这样(你也可以使用RGB功能):

Sub Muppets()
    Dim Kermit As Range
    Set Kermit = Cells.Find("Kermit")

    Dim ooo As Range

    Set ooo = Range(Kermit.Address, Kermit.Offset(1, 0).End(xlDown).Address)

    ooo.Interior.Color = vbBlue ' RGB(0, 0, 255)

End Sub