Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在VBA中将列/行索引用作范围_Vba - Fatal编程技术网

如何在VBA中将列/行索引用作范围

如何在VBA中将列/行索引用作范围,vba,Vba,像使用单元格(1,1)而不是范围(“A1”),在VBA中使用列/行索引作为范围的最佳方法是什么 我提出了两种表示范围的解决方案(“A:A”): 范围(单元格(1,1),单元格(列(1)。行数,1)) Union(第(1)列、第(1)列)) 有更好、更简洁的解决方案吗 编辑:注意到TecScript的回复,并感谢您的回复。我已经试过了,但它给出了以下错误: 运行时错误“13”:类型不匹配 代码如下: Sub tfind() Dim r1 As Range Set r1 = Co

像使用
单元格(1,1)
而不是
范围(“A1”)
,在VBA中使用列/行索引作为范围的最佳方法是什么

我提出了两种表示范围的解决方案(“A:A”):

  • 范围(单元格(1,1),单元格(列(1)。行数,1))
  • Union(第(1)列、第(1)列))
有更好、更简洁的解决方案吗

编辑:注意到TecScript的回复,并感谢您的回复。我已经试过了,但它给出了以下错误:

运行时错误“13”:类型不匹配

代码如下:

Sub tfind()
    Dim r1 As Range
    Set r1 = Columns(1)
    MsgBox mCount("Test:", r1)
End Sub
Function mCount(find As String, lookin As Range) As Long
   Dim cell As Range
   For Each cell In lookin
       If (Left(cell.Value, Len(find)) = find) Then mCount = mCount + 1
   Next
End Function
尽管如果第三行:

Set r1 = Columns(1)
更改为:

Set r1 = Union(Columns(1), Columns(1))

没有最好的方法可以做到这一点,但有一些方法可以根据您的需要使用。例如,如果要在行和列之间循环,最好使用
单元格()

另一方面,根据您的需要,您可以通过任何一种方式引用类似于
范围(“A1:B3”)
的范围。如果您只是需要参考,您应该使用
范围(“A1:B3”)
。如果需要处理行和列,最好使用
范围(单元格(1,1),单元格(3,2))

这一切都是关于可读性和功能性

对于您的问题,您可能希望使用以下选项:

  • 范围(“A:A”)
    -->
    列(1)

  • 范围(“A:C”)
    -->
    范围(第(1)列、第(3)列))

编辑:您正在循环A列中的单元格,在这种情况下,您需要使用:

  • 列(“A”)。单元格
    列(1)。单元格

如果您更早发布代码,则更容易获得正确答案。你要找的是
.Cells
完美!又来了
Sub RowTimesColumn()
Dim i As Long, j As Long
For i = 1 To 10
    For j = 1 To 5
        Cells(i, j) = i * j
    Next j
Next i
End Sub