簡體   English   中英

搜索/查找單元格后,Excel VBA設置范圍/單元格

[英]Excel VBA Set Range/Cells after searching/find a Cell

``我正在畫圖。 首先,我想在“ B”列中搜索關鍵字“ A-test”,然后從找到該詞的位置選擇10行和2列。 我很難選擇范圍。 請幫助在這種情況下如何使用“設置”功能。 這是我正在測試的宏

'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Sub Macro3()    
Macro3 Macro    
    Dim Ws As Worksheet    
    Dim i  As Long
    Dim k As Long
    Dim M As Range
    EndRow = ActiveWorkbook.Sheets("Sheet1").Range("B1").Offset(Sheets("Sheet1").Rows.Count - 1, 0).End(xlUp).Row
    i = 1
    For k = 2 To EndRow
        If Cells(k, 2) Like "*A*" Then
            Set M = Range("C1:L1", ActiveCell(i, 2).Offset(2, 10)) 'Difficult
            'Range("B1").Select 'test
            'Range("C1:L1,B4:L5").Select 'test
        End If
        'Cells(k, 2) Like "*A*"
    Next
End Sub
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

這是數據。

Date    choice  Sample#1    Sample#2    Sample#3    Sample#4    Sample#5    Sample#6    Sample#7    Sample#8    Sample#9    Sample#10
2018/07/12 00:06:58 A-test  105259  103495  105225  103923  104536  103196  105020  104316  105317  103021
2018/07/12 00:07:03 B-test  105260  103848  105225  103923  104535  103196  105020  104316  105316  103021
2018/07/12 00:07:47 A-test  103108  101758  102702  101784  102592  101688  103971  103345  104344  101513
2018/07/12 00:07:51 B-test  103109  101410  102701  101785  102592  101688  103970  103346  104344  101513
2018/07/12 00:15:48 B-test  103108  101409  102702  101785  102593  101688  103971  103345  104345  101513
2018/07/12 00:40:16 B-test  103108  101408  102701  101785  102592  101688  103971  103345  104344  101513

使用Find方法更快。 這假定文本僅出現一次,但如果不是這種情況,則可以對其進行修改。

閱讀此書以了解為什么您可能不需要選擇任何內容。

您可能想在Resize交換10和2-不確定在那里想要什么。

Sub y()

Dim r As Range

Set r = Sheets("Sheet1").Range("B:B").Find(What:="A-test", Lookat:=xlWhole, MatchCase:=False, SearchFormat:=False)

If Not r Is Nothing Then r.Resize(10, 2).Select '10 rows, 2 columns

End Sub

如果要引用更大的范圍,則將其分配給范圍變量,然后無需使用Select即可直接訪問其屬性和方法。

Sub y()

Dim r As Range, rBig As Range

Set r = Sheets("Sheet1").Range("B:B").Find(What:="A-test", Lookat:=xlWhole, MatchCase:=False, SearchFormat:=False)

If Not r Is Nothing Then
    Set rBig = r.Resize(10, 2)
End If

'then do stuff with the 10x2 range
'eg colour it red
rBig.Interior.Color = vbRed

End Sub

暫無
暫無

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

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