我怎样才能让这个宏捕获最新的数据?

我怎样才能让这个宏捕获最新的数据?

我录制了一个宏,它能正常工作。问题是它捕获的是绝对单元格,而不是动态单元格。让我解释一下。

我有一个估算页面,我将装置复制到其中。在其中一个单元格中,它将是 A、B 或 C... 等等。当我录制宏时,当我在 A 选项卡上时,它会捕获绝对数据(如 A),但当我加载 B 选项卡时,宏会放入“A”。因此例程如下。我将用粗体显示我需要动态的内容。

Sub FixColumns() ' ' FixColumns Macro '

'
    Range("A1").Select
    ActiveCell.Offset(1, 15).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=Estimating1!R[3]C[-10]"
    ActiveCell.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = **"C"**
    ActiveCell.Select
    Selection.AutoFill Destination:=ActiveCell.Range("A1:A38"), Type:= _
        xlFillDefault
    ActiveCell.Range("A1:A38").Select
    ActiveWindow.SmallScroll Down:=-45
    ActiveCell.Offset(0, -14).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=Estimating1!R[8]C[3]"
    ActiveCell.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = **"His Dressing"**
    ActiveCell.Select
    Selection.AutoFill Destination:=ActiveCell.Range("A1:A38"), Type:= _
        xlFillDefault
    ActiveCell.Range("A1:A38").Select 
    End Sub

因此,在上面的宏中,当我录制宏时,“C”和“His Dressing”是从 C 选项卡中捕获的。因此,当我加载“D”选项卡时,它应该捕获“D”和“His Bath”,但它没有这样做。它记得我加载 C 选项卡时录制宏的时间。因此,在它说的地方ActiveCell.FormulaR1C1-"A",我需要它捕获我已加载的任何 A/B/C/D 选项卡。我解释得对吗?在宏中说“A”或“C”或其他什么的地方,需要根据单元格的实际情况动态变化。

这是包含 fixcolumns 宏的文件的链接 包含 fixcolumn 宏的 excel 文件

答案1

我无法访问您链接到的文件,但我建议您查看 Worksheet.Name以获取工作表的名称(您的说法是选项卡)。

然后您可以使用它从该表的某一列中获取值。

另一方面,你可能只需要使用类似

With ActiveSheet
    .Range("A1:A38") = .Name
End With

如果没有原始工作簿可供查看,则很难看清。

不过我想说的是,宏记录器为这种操作生成的代码通常既冗长又难懂,而且通常只用几行编写良好的 VBA 就可以完成相同的操作。

我知道这对您来说似乎是一大步,但网络上有很多关于使用 Excel VBA 的帮助,因此看看您正在做什么并尝试编写适合的代码可能会有所收获。

相关内容