【问题标题】:Excel macro modification ( or maybe VBA ) to update the last included worksheetExcel 宏修改(或者可能是 VBA)以更新最后包含的工作表
【发布时间】:2018-11-07 06:12:48
【问题描述】:

情况

尝试将包含公式的单元格范围从名为“Sheet1”的工作表复制到其他其他工作表,我发现我可以执行“跨工作表填充”。它工作得很好,所以我的下一步是录制一个宏,让它更有效率,也工作得很好。

问题

问题是,当我包含一个新工作表并运行宏时,宏不会考虑新工作表,因此最后一个工作表不会得到更新。

我在下面包含由宏创建的代码。在其中我可以看到它只包括我现在在工作簿中的工作表,所以这是我需要帮助的地方。

(我的 excel 是西班牙语,所以当您阅读 Ctrl+Mayus+Q 时,Mayus 表示 Shiftkey)

帮助

我需要的是一种修改此宏的方法,以便在它运行时检查并更新所有工作表。或者,也许是因为宏无法做到这一点,我可能需要 VBA 代码?如果这个 VBA 是解决它的方法,你能帮我解决这个问题吗?

感谢所有帮助

谢谢

哈维尔

Sub Macro2()
'
' Macro2 Macro
'
' Acceso directo: Ctrl+Mayús+Q
'
    Range("A5:D12").Select
    Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4")).Select
    Sheets("Sheet1").Activate
    ActiveWindow.SelectedSheets.FillAcrossSheets Range:=Selection, 
Type:=xlAll
    Sheets("Sheet1").Select
End Sub

【问题讨论】:

  • 最后一张表可能不包含在数组中。您可能想搜索一个 For Each 循环。

标签: vba excel


【解决方案1】:

这是一种变通方法,涉及您希望所有工作表都具有A5:D12 范围内的第一个工作表的值:

Sub TestMe()

    Dim ws As Worksheet
    Dim selAddress As String
    selAddress = "A5:D12"

    For Each ws In Worksheets
        'ws.Range(selAddress).Value2 = Worksheets(1).Range(selAddress).Value2
        ws.Range(selAddress).Formula = Worksheets(1).Range(selAddress).Formula
    Next ws

 End Sub

How to avoid using Select in Excel VBA

【讨论】:

  • 我刚刚在工作表中为 ws 复制了相同的东西......但是改进代码的好例子...... +1
  • 差不多。它复制了我在 Sheet1 范围内的值。问题是在那个范围内有一些带有公式的单元格,所以单元格中的公式没有被复制。所以 VBA 应该考虑复制公式,很抱歉在我的帮助请求中没有提醒需要复制公式
  • @Javier_Caceres - 您可以将 .Value2 更改为 .Formula 并试一试。
  • 非常感谢 Vityata 和 Solar Mike
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多