在1中为3个不同的操作创建一个宏

时间:2016-12-16 14:29:56

标签: excel-vba macros vba excel

对不起我的语言,不是原生语言。

所以这可能有问题。

有一张包含大约30张纸和数据的工作簿。我需要根据工作表的名称将数据转换为某种格式。我为每种格式创建了一个适用于所有选定工作表的marco。 我的想法是在检查工作表的名称和格式化数据时创建一个宏调用三个格式marcos中的一个。像

这样的东西
If sheet.name = "111, 112, 113..." then 'if it fit the name do the format-1

call "Module_name_1"

Else if sheet.name = "222, 223, 224..." then 'if it fit the name do the format-2

    call "Module_name_2"

Else sheet.name = "333, 334, 335..." then 'if it fit the name do the format-3

    call "Module_name_3"

无论如何,谢谢你的时间=)

4 个答案:

答案 0 :(得分:0)

检查所有工作表名称的前两个字符:

Sub SID()
    Dim shn As String, sh As Worksheet
    Dim shn2 As String

    For Each sh In Sheets
        shn = sh.Name
        shn2 = Left(shn, 2)
        If shn2 = "11" Then Call Module_name_1
        If shn2 = "22" Then Call Module_name_2
        If shn2 = "33" Then Call Module_name_3
    Next sh
End Sub

答案 1 :(得分:0)

您可以使用select case语句检查名称。 比较时,此处的数字应转换为字符串。这样,您可以根据您的价值轻松分支。 如果您需要更改限制,请更改119,229和339。

Select Case sheet.name
    Case 111 To 119
'if it falls into the region then do the format-1

        call "Module_name_1"

    Case 222 To 229
    'if it fit the name do the format-2

        call "Module_name_2"

    Case 333 To 339
    'if it fit the name do the format-3

         call "Module_name_3"

End Select

答案 2 :(得分:0)

你甚至不需要打电话'但它看起来不错,而且可能更直观。如果你真的想简化一些事情,试试这样的事情。

选择Case sheet.name     案例111至119   Module_name_1     案例222至229   Module_name_2     案例333至339   Module_name_3 结束选择

答案 3 :(得分:-1)

如果工作表名称的第一个字符是决定因素,可能是

if [[ $choice = 1 || $ choice = 3 ]]; then
    ...
fi