Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 独立使用部分宏代码_Vba_Excel - Fatal编程技术网

Vba 独立使用部分宏代码

Vba 独立使用部分宏代码,vba,excel,Vba,Excel,我有一个疑问! 我有一个在工作簿中合并22张工作表的代码。 现在,我想为每个工作表准备单独的按钮,这样,如果用户需要,他们可以只合并他们所需的工作表,而不是全部22个工作表 我只知道如何创建22个单独的模块,每个模块都有与每张表相关的部分代码。有没有其他简洁的方法可以让我不准备22个单独的模块 代码示例: sheetsAT.select 不管需要什么代码 SheetsDE.select 不管需要什么代码 等等。。。。 如果问题不清楚,请告诉我。您只需要一个模块。单击工作表上的按钮时,它将位于活动

我有一个疑问! 我有一个在工作簿中合并22张工作表的代码。 现在,我想为每个工作表准备单独的按钮,这样,如果用户需要,他们可以只合并他们所需的工作表,而不是全部22个工作表

我只知道如何创建22个单独的模块,每个模块都有与每张表相关的部分代码。有没有其他简洁的方法可以让我不准备22个单独的模块

代码示例:

sheetsAT.select 不管需要什么代码

SheetsDE.select 不管需要什么代码

等等。。。。
如果问题不清楚,请告诉我。

您只需要一个模块。单击工作表上的按钮时,它将位于活动工作表上。因此,您只需对activesheet执行操作,而不需要对工作簿中的每个工作表执行操作

如果我正在做这项工作,我会创建一个用户表单,其中包含用户可以选择的工作表名称列表,然后模块将逐步遍历列表中每个选定的工作表名称,并执行您需要的任何操作。整个工作簿操作的复选框也很有用


使用commandbutton和名为myListBox的列表框创建一个新的Userform,并确保MultiSelect属性设置为multi而不是single,然后添加以下代码。这将逐步浏览工作簿中的每个工作表,并将名称添加到列表框中。选择多个名称并单击命令按钮后,它会将所选名称打印到即时窗口

Private Sub UserForm_Initialize() 
Dim wks As Worksheet 
    For Each wks In ActiveWorkbook.Worksheets 
        Me.myListBox.AddItem wks.Name 
    Next 
End Sub 

Private Sub CommandButton1_Click() 
    For i = 0 To myListBox.ListCount - 1 
        If myListBox.Selected(i) Then 
            Debug.Print myListBox.List(i)
        End If 
    Next i 
End Sub

建议使用包含所有工作表的列表框创建用户表单,用户选择必须合并的工作表。然后,仅在带有For..Next和SelecT Case…End SelectRecord宏的工作表中执行代码,同时添加按钮。那会给我们一些东西来建造on@foxfire伯恩斯和伯恩斯:是的,我也在这样做。我准备了一份excel表格。现在,我想在列表前面添加按钮,以便宏代码只为该部分运行。但我不知道我应该在哪里添加..下一步结合选择案例。。。结束选择。山姆:谢谢你的回复,山姆,但是在这种情况下录制宏并不能解决我的问题。这是你的合并代码,模块中的一个子模块?嗨,安迪,谢谢。我对vba编码世界非常陌生。所以我不知道如何执行你说的话?您能否提供一个示例/说明性代码。使用commandbutton和名为myListBox的列表框创建一个新的Userform,并确保MultiSelect属性设置为multi而非single,然后添加以下代码。这将逐步浏览工作簿中的每个工作表,并将名称添加到列表框中。选择多个名称并单击命令按钮后,它会将所选名称打印到即时窗口。Private Sub UserForm_将Dim wks初始化为Active工作簿中每个工作的工作表。Worksheets Me.myListBox.AddItem wks.Name下一个End Sub Private Sub CommandButton1_单击i=0到myListBox.ListCount-如果是myListBox,则为1。选择EDI,然后调试。如果下一次我结束,则打印myListBox.Listi结束Sub@AndyW我认为如果你编辑你的答案并添加你在上一条评论中发布的代码会更好。