Excel 当窗体控件位于与数据不同的工作表上时,如何从窗体控件运行宏
我在工作表1中有数据,我在另一个工作表中放置了一个表单控件,用于在工作表1中的数据上运行宏。代码在第1页上。当我在工作表1中运行宏时,下面的代码起作用,但当我将宏指定给不同工作表中的按钮,然后按下该按钮时,我得到错误400。我觉得解决办法很简单,但我被卡住了Excel 当窗体控件位于与数据不同的工作表上时,如何从窗体控件运行宏,excel,vba,Excel,Vba,我在工作表1中有数据,我在另一个工作表中放置了一个表单控件,用于在工作表1中的数据上运行宏。代码在第1页上。当我在工作表1中运行宏时,下面的代码起作用,但当我将宏指定给不同工作表中的按钮,然后按下该按钮时,我得到错误400。我觉得解决办法很简单,但我被卡住了 Sub Delim() Columns("F:I").Select Selection.Replace What:="InvalidAnswer;", Replacement:="", LookAt:=xlPart _ , Sea
Sub Delim()
Columns("F:I").Select
Selection.Replace What:="InvalidAnswer;", Replacement:="", LookAt:=xlPart _
, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=";InvalidAnswer", Replacement:="", LookAt:=xlPart _
, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="InvalidAnswer", Replacement:="", LookAt:=xlPart _
, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Columns("F:F").Select
Selection.TextToColumns Destination:=Range("F1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:= _
True
End Sub
将新的标准模块添加到项目中,然后将宏移到那里
Option Explicit
Public Sub Delim()
With Sheet1.Columns("F:I")
.Replace ...
.Replace ...
.Replace ...
End With
With Sheet1.Columns("F:F")
.TextToColumns ...
End With
End Sub
现在,您可以将Delim
宏(可能需要更具描述性的名称)分配给任何形状
对象,包括任何表单控件(右键单击该控件,选择“分配宏…”)。注:
- 在
的代码隐藏中不合格,Sheet1
隐式Columns
;在标准模块中不合格,Me.Columns
是隐式的Columns
,您需要使用ActiveSheet.Columns
对象明确限定它<代码>工作表1(VBA项目中第一个工作表
模块的默认代码名-您可以通过设置其工作表
属性在属性工具窗口(F4)中对其进行更改)应能正常工作(名称)
- 当代码使用显式对象限定符时,无需
或选择
任何内容激活
工作表
事件,因此在工作表模块中使用它是没有意义的。