Vba 跨图纸应用宏特定范围

Vba 跨图纸应用宏特定范围,vba,excel,Vba,Excel,inn数据说明 1.表格和宏 二, 1中的表1。[表和宏]显示了未应用宏的主表 宏的工作原理如下:选择要应用宏的范围,然后使用NA值所在列中的上一个(以上)数值更改NA值 通过选择范围B3:D11并运行宏生成表3(即,在所示图片中,宏应用于以下范围,然后移到右侧) 通过选择范围B4:D11并运行宏生成表2(即,在所示图片中,宏应用于以下范围,然后向右移动) 我试过的 我曾尝试在excel中运行record宏,试图加快速度,但没有任何运气 发行 我有与表1所示相同的数据,在4张表格中的

inn数据说明

1.表格和宏

二,

  • 1中的表1。[表和宏]显示了未应用宏的主表

  • 宏的工作原理如下:选择要应用宏的范围,然后使用NA值所在列中的上一个(以上)数值更改NA值

  • 通过选择范围B3:D11并运行宏生成表3(即,在所示图片中,宏应用于以下范围,然后移到右侧)

  • 通过选择范围B4:D11并运行宏生成表2(即,在所示图片中,宏应用于以下范围,然后向右移动)

我试过的

  • 我曾尝试在excel中运行record宏,试图加快速度,但没有任何运气
发行

  • 我有与表1所示相同的数据,在4张表格中的完全相同的位置(见[2.excel中的数据文件,包含宏和表格])。因此,我想知道如何在所有工作表上运行宏,以生成表2中的值,而不包括标题
  • 我有更多的表,我需要应用这个

而不是使用
选择运行代码

将过程名称更改为
Sub-FixData(rng作为范围)

将代码中的
选择更改为
rng

编写另一个过程,将范围传递给该过程:

Public Sub Test()
    With ThisWorkbook
        FixData .WorkSheets("Sheet1").Range("B3:D11")
        FixData .WorkSheets("Sheet2").Range("B4:D11")
    End With
End Sub
将所有代码放在正常模块中

要在工作簿中的所有工作表上运行代码,请使用以下代码。要排除某些工作表,请包括标有“
”***
的行

Public Sub FixOnAllSheets()

    Dim wrkSht As Worksheet

    For Each wrkSht In ThisWorkbook.Worksheets
        Select Case wrkSht.Name                     '**
            Case "Sheet1", "Sheet2"                 '**
                'Do nothing or do something else.
            Case Else                               '**
                FixData wrkSht.Range("B3:D11")
        End Select                                  '**
    Next wrkSht

End Sub

嗨,非常感谢。当我添加另一个过程时,代码会起作用。但是,我想知道如何将它同时应用于所有的工作表?我有大约2000张我需要用它。我是否必须手动键入FixData.WorkSheets(“Sheet1”).Range(“B3:D11”)FixData.WorkSheets(“Sheet2”).Range(“B4:D11”)直到sheet2500?或者有更简单的方法吗?我已经在我的答案中添加了如何在工作簿中的所有工作表上运行代码。你在每张纸上看到的范围是否相同?如果工作不完美,那就需要一些额外的代码!