簡體   English   中英

從其他單元格生成范圍Excel VBA

[英]generating a range from other cells excel vba

我不確定是否可以一開始就這樣做。

我正在遍歷一些單元格,並在某個時候想定義一個這樣的范圍:

Set rngtmp = Range(f.Column & c.Row & ":" & g.Column & c.Row)

f和g指向單個單元格,它們是可以的(我的意思是它們可以正常工作),因為我也在做一些操作,以它們為參考並且它們可以工作。

c是我當前所在的單元(因為我要遍歷所有單元)。 范圍總是空的,我不明白為什么。

f。列小於g。列

您可以使用.Cells()屬性

Dim wb As Workbook, ws As Worksheet
Dim rngTmp As Range

Set wb = ThisWorkbook
Set ws = wb.Sheets(1)

With ws
    Set rngTmp = .Range(.Cells(c.Row, f.Column), .Cells(c.Row, g.Column))
End With

您不能使用整數來確定范圍對象的大小。 您需要使用.Cells屬性才能使用整數來構建范圍。

編輯:

正如@ Scott Holtzman提到的,您必須首先將.Row然后將.Column傳遞到.Cells (與您在問題中所顯示的方式相反)。

如@ eirikdaude所述,您可以使用.Range ,然后使用.Resize屬性 這使您可以在該范圍內使用整數,而不必使用.Cells屬性。 將數組寫入工作表時,通常使用這種方法。

使用Cells可以引用單個單元格。 然后,您可以在范圍內加入這些:

Sub Test()
    Dim rngtmp As Range
    Dim f As Range
    Dim c As Range
    Dim g As Range

    With ThisWorkbook.Worksheets("Sheet1")
        Set f = .Range("A1")
        Set c = .Range("D8")
        Set g = .Range("L22")
        Set rngtmp = .Range(.Cells(c.Row, f.Column), .Cells(g.Column, c.Row))
    End With
End Sub

注意,由於With...End With塊, .Range.Cells將引用Sheet1。
https://msdn.microsoft.com/en-us/library/wc500chb.aspx

您不能使用.Column因為它返回列的整數索引,而不是字母。

嘗試一些類似的方法

set rngtmp = Range(Cells(f.Row, c.Column), Cells(g.Row, c.Column))

當然,您將需要參考工作表和單元格,例如

暫無
暫無

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

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