Vba 如何将工作表模块中具有多个参数的宏分配给命令按钮,以便在受保护的工作表中插入新表行?

Vba 如何将工作表模块中具有多个参数的宏分配给命令按钮,以便在受保护的工作表中插入新表行?,vba,excel,Vba,Excel,我的工作表Sheet1中有一个命令按钮,在一个表格下 我的工作表受保护,我需要让用户添加新行 下面的宏是为这样做而编写的:它位于工作表模块中 Sub TblNewLine(Sht As String, Tbl As String, Pass as String, Filtering As Boolean, Pivot As Boolean) if Nor Pass = vbNullString then Dim strP as String strP = InputBox ("P

我的工作表Sheet1中有一个命令按钮,在一个表格下

我的工作表受保护,我需要让用户添加新行

下面的宏是为这样做而编写的:它位于工作表模块中

Sub TblNewLine(Sht As String, Tbl As String, Pass as String, Filtering As Boolean, Pivot As Boolean)
if Nor Pass = vbNullString then
    Dim strP as String
    strP = InputBox ("Please input Password","Password")
    if Not strP = Pass Then
        if not strP = vbNullString Then MsgBox "Wrong Password!", vbCritical, "Error!"
        Exit Sub
    End If
End If
    Sheets(Sht).Unprotect
    Sheets(Sht).ListObjects(Tbl).ListRows.Add
    Sheets(Sht).Protect AllowFiltering:=Filtering, AllowUsingPivotTables:=Pivot
End Sub 'TblNewLine
例如:参数是:

sht:=sheet1,Tbl:=PVT报告,通过:=,过滤:=True,透视:=True

因此,我需要将此宏分配给表下的“准备好的命令”按钮

按下按钮传递参数

在“指定宏”窗体中,我在“宏名称”组合框中找不到上述宏

如何将上述宏及其相关参数指定给命令按钮


或者,有没有更好的方法将新行插入到受保护的工作表中?

请尝试以下操作:

Sub Button1_Click()
    Call TblNewLine("Sheet1", "PvtReport", True, True)
End Sub

Sub TblNewLine(Sht As String, Tbl As String, Filtering As Boolean, Pivot As Boolean)
    Sheets(Sht).Unprotect
    Sheets(Sht).ListObjects(Tbl).ListRows.Add
    Sheets(Sht).Protect AllowFiltering:=Filtering, AllowUsingPivotTables:=Pivot
End Sub
编辑:

请参见图片以供参考

非常感谢您的指导;为了得到更多的解释,我给出了我的答案:

有一种通过命令按钮传递参数的方法,我阅读了in对相关问题的回答

起初,我在Microsoft Excel中遇到了“无法运行宏”错误,但当我关闭并打开工作簿文档时,Assign Macro中的“宏名称”字段被更改为bellow,通过单击按钮传递常量,我的子例程被真正调用

'FileName.xlsm'!'TblNewLine "SheetName", "tblReminder","",True,False' 
请不要使用“用twisted括起子例程名称和参数列表字符串的字符”

在上面的示例中,我的sub需要5个参数,因此它们与希望调用此sub的每个命令按钮一起传递

关于没有参数的赋值宏,在工作表模块中有,下面列出的是Asign宏组合列表,而不是其他模块中子程序的顺序


如果子程序宏有参数,则Asign宏中没有列出参数,应在相关字段中输入它们,如上面我解释的示例所示。

删除Sub之前的Private关键字。有关详细信息,请参阅。已删除,但尚未在assign宏中显示。当我在Assign Macro的Macro name字段中写入子程序名时,它被调用。但是在向我的子程序传递参数时出现了问题。谢谢。似乎无法通过按钮直接传递参数。如何通过命令按钮调用Sheet1模块中的Buton1\u Click宏。因为在“分配宏”组合框中找不到“按钮1\u单击”。您可以简单地将“调用按钮1\u单击”写入“分配宏”列表中,但您应该能够在“分配宏”列表中看到所有子名称。您是否可以将工作簿与虚拟数据共享,以便我可以查看。当然可以。我的工作簿有许多波斯语字符。当我在子例程中写入参数时,子名称已从assign宏列表中隐藏。和子例程位于“工作表”模块中,未显示在“分配宏”列表中。@MGae2M-在VBA编辑器中尝试选择支持您的语言的工具>选项>编辑器格式>字体。虽然我不确定这是否能解决你的问题。