繁体   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