在工作表中应用宏特定范围

时间:2017-03-09 18:41:07

标签: excel vba excel-vba

旅店数据的描述

1.Tables和宏 enter image description here

2. Data file in excel with macro and sheets

  • 表1中的1. [表格和宏]显示没有应用宏的主表。

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

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

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

我尝试了什么

  • 我尝试在excel中运行记录宏来尝试让它更快,没有任何运气。

问题

  • 我有与表1中描述的相同的数据,在4张纸的完全相同的位置(这在[2.Data文件in excel with macro and sheets]中显示)。因此,我想知道如何在所有工作表上运行宏,以生成如表2中所做的值,而不包括标题。
  • 我需要申请更多的工作表。

1 个答案:

答案 0 :(得分:1)

而不是使用Selection运行代码。

将程序名称更改为Sub FixData(rng As Range) 将代码中的Selection更改为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