Vba 在Excel VB中获取当前单元格

Vba 在Excel VB中获取当前单元格,vba,excel,Vba,Excel,我在Excel/VB中有一个小脚本,我正在尝试使用它。我只想选择一个要复制的动态数据范围,但似乎找不到关于如何获取A11这样的网格数据的任何帮助/代码 以下是我从宏录制中获得的代码,用于选择数据范围: Range("D291:D380").Select 我希望我能做RangeCurrent.Select之类的,但那不行 非常感谢您的帮助。您是否尝试过: 对于一个单元: ActiveCell.Select 对于多个选定单元格: Selection.Range 例如: Dim rng As R

我在Excel/VB中有一个小脚本,我正在尝试使用它。我只想选择一个要复制的动态数据范围,但似乎找不到关于如何获取A11这样的网格数据的任何帮助/代码

以下是我从宏录制中获得的代码,用于选择数据范围:

Range("D291:D380").Select
我希望我能做RangeCurrent.Select之类的,但那不行

非常感谢您的帮助。

您是否尝试过:

对于一个单元:

ActiveCell.Select
对于多个选定单元格:

Selection.Range
例如:

Dim rng As Range
Set rng = Range(Selection.Address)

如果您试图用动态生成的字符串获取一个范围,那么您只需按如下方式构建字符串:

Range(firstcol & firstrow & ":" & secondcol & secondrow).Select

这可能无助于直接回答您的问题,但在尝试使用动态范围时,我发现这很有用,可以帮助您解决问题

假设在工作表中,A1:C3单元格中有数字100到108:

          A    B    C  
1        100  101  102
2        103  104  105
3        106  107  108
然后,要选择所有可以使用CurrentRegion属性的单元格:

Sub SelectRange()
Dim dynamicRange As Range

Set dynamicRange = Range("A1").CurrentRegion

End Sub
这样做的好处是,如果向数字块(例如109、110、111)添加新行或新列,则当前区域将始终参考放大的范围(在本例中为A1:C4)

我在VBA代码中使用了很多CurrentRegion,发现它在处理动态大小的范围时非常有用。它还避免了在代码中硬编码范围

最后,在我的代码中,您将看到我使用A1作为CurrentRegion的参考单元格。无论引用哪个单元格,它都会起作用。例如,用B2替换A1。原因是CurrentRegion将基于引用单元格选择所有连续单元格

关键字选择已经是vba范围对象,因此您可以直接使用它,并且不必选择要复制的单元格,例如,您可以在Sheet1上发出以下命令:

ThisWorkbook.worksheets("sheet2").Range("namedRange_or_address").Copy
ThisWorkbook.worksheets("sheet1").Range("namedRange_or_address").Paste
如果是多重选择,则应在for循环中使用区域对象:

Dim a as Range
For Each a in ActiveSheet.Selection.Areas
    a.Copy
    ThisWorkbook.worksheets("sheet2").Range("A1").Paste
Next
问候

托马斯试试这个

Dim app As Excel.Application = Nothing
Dim Active_Cell As Excel.Range = Nothing

Try
            app = CType(Marshal.GetActiveObject("Excel.Application"), Excel.Application)
 Active_Cell = app.ActiveCell

Catch ex As Exception
            MsgBox(ex.Message)
            Exit Sub
        End Try

'             .address will return the cell reference :)

我意识到这并不直接适用于问题的标题,但是处理变量范围的一些方法可以是每次代码运行时选择该范围-特别是如果您对用户选择的范围感兴趣。如果您对该选项感兴趣,可以使用Application.InputBox官方文档页面。可选变量之一是“类型”。如果类型设置为8,则InputBox还具有excel样式范围选择选项。如何在代码中使用它的示例如下:

Dim rng as Range
Set rng = Application.InputBox(Prompt:= "Please select a range", Type:=8)
注:

如果将InputBox值分配给不带Set关键字的none range变量,而不是范围,则将分配范围中的值,如下代码所示,尽管在这种情况下选择多个范围可能需要将值分配给变量:

Dim str as String
str = Application.InputBox(Prompt:= "Please select a range", Type:=8)

我想ActiveCell。地址可以用。我有一个MsgBox,它显示我试图获取的变量数据。@我又添加了一些应用程序。查看它。若要展开此答案,设置rng后,可以获得rng.Cells.Column和rng.Cells.Row。若要在ActiveCell.Address上展开,请将s设置为字符串:s=ActiveCell.Address,它将返回例如$E$3.App.ActiveCell.App.ActiveCell;