簡體   English   中英

如何在Excel VBA中選擇完整范圍

[英]How to select full range in excel vba

當我調試excel-vba程序時,我知道我的數據范圍未完全選擇。

下圖顯示了我的數據模型和問題。 在此處輸入圖片說明

我使用此代碼選擇了整個范圍。 但這不能正常工作。

Dim rngTemp As Range
Set rngTemp = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
With rngTemp

請通過提供上圖所示的選擇整個范圍的代碼來幫助我。

在您的代碼中,您正在按xlByRows搜索。 因此,您將獲得最后一個單元格的地址,該單元格的數據為G7

根據我的評論,這是您要嘗試的嗎?

Sub Sample()
    Dim lastrow As Long, lastcol As Long
    Dim rng As Range

    With Sheets("Sheet1") '<~~ Change this to the relevant sheet
        If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
            lastrow = .Cells.Find(What:="*", _
                          After:=.Range("A1"), _
                          Lookat:=xlPart, _
                          LookIn:=xlFormulas, _
                          SearchOrder:=xlByRows, _
                          SearchDirection:=xlPrevious, _
                          MatchCase:=False).Row
            lastcol = .Cells.Find(What:="*", _
                          After:=.Range("A1"), _
                          Lookat:=xlPart, _
                          LookIn:=xlFormulas, _
                          SearchOrder:=xlByColumns, _
                          SearchDirection:=xlPrevious, _
                          MatchCase:=False).Column
        Else
            lastrow = 1: lastcol = 1
        End If

        Set rng = .Range("A1:" & _
                         Split(.Cells(, lastcol).Address, "$")(1) & _
                         lastrow)

        MsgBox rng.Address
    End With
End Sub

請注意,在某些情況下以下方法不可靠。 我將在這里留下這個答案作為一個不好的例子。 有關詳細信息,請參閱此鏈接中的 @SiddharthRout的解釋。

我將使用以下代碼查找已用范圍,而不是在單元格值中查找“ *”:

Sub SelectRange()
    Dim LastRow As Long
    Dim LastColumn As Long
    Dim aWB As Workbook
    Dim aWS As Worksheet

    Set aWB = ActiveWorkbook
    Set aWS = aWB.ActiveSheet '<-You can change sheet name like aWB.sheets("SheetName")

    With aWS.UsedRange
        LastRow = .Rows(.Rows.Count).Row
        LastColumn = .Columns(.Columns.Count).Column
    End With

    aWS.Range(Cells(1, 1), Cells(LastRow, LastColumn)).Select '<---Cells(1, 1) is the starting cell of range)

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM