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 application.run(宏,Arg1,Arg2)_Vba_Excel - Fatal编程技术网

Vba application.run(宏,Arg1,Arg2)

Vba application.run(宏,Arg1,Arg2),vba,excel,Vba,Excel,我谨请求就以下问题提供协助: 我试图运行一个运行多个宏的宏,但它基于以下两个字符串: Sub ExportDatatoCountriesSheets() Dim shtnme As String Dim country As String ' United States shtnme = "US" country = "United States" ' ClearLatestData Application.Run "ClearLate

我谨请求就以下问题提供协助:

我试图运行一个运行多个宏的宏,但它基于以下两个字符串:

Sub ExportDatatoCountriesSheets()

    Dim shtnme As String
    Dim country As String

    ' United States
    shtnme = "US"
    country = "United States"
    ' ClearLatestData
    Application.Run "ClearLatestData"
    ' FilterExportDataByCountry
    Application.Run "FilterExportDataByCountry"

    ' Japan
    shtnme = "JP"
    country = "Japan"
    ' ClearLatestData
    Application.Run "ClearLatestData"
    ' FilterExportDataByCountry
    Application.Run "FilterExportDataByCountry"

End Sub

'==============================================================

Sub ClearLatestData()

    Dim shtnme As String
    Dim country As String
    Sheets(CStr(shtnme)).Activate
    Columns("A:Z").Select
    Selection.Clear

End Sub

'==============================================================

Sub FilterExportDataByCountry
Sheets("WEEKLY DATA").Select
    ActiveSheet.Range("$A$1:$G$240").AutoFilter Field:=3,    Criteria1:=CStr(country)
    Columns("A:G").Select
    Selection.Copy
    Sheets(CStr(shtnme)).Activate
    Range("A1").Select
    ActiveSheet.Paste
然而,我不断地犯错误。基本上,我希望在输入代码并按应用程序运行其他宏时,将
ExportDatatoCountriesSheets
宏设置为重复。运行

我已经搜索过了,最接近的解决方案是使用参数运行宏,但当我定义参数时,宏无法正常运行,并出现错误

Application.Run (ClearLatestData, shtnme = "US", country = "United States")
如有可能,请告知

要调用“ClearLatestData”宏(
Sub
),您需要将两个参数添加到接收
Sub
)。因此,语法应该是:

Sub ClearLatestData(shtnme As String, country As String)
子ClearLatestData
中,您将删除声明
字符串的两行变量:

Dim shtnme As String
Dim country As String
要使用
shtnme
country
调用
Sub-ClearLatestData
,请使用:

Application.Run "ClearLatestData", shtnme, country
或者,“更干净”的较短版本:

ClearLatestData shtnme, country
代码

Sub ExportDatatoCountriesSheets()

Dim shtnme As String
Dim country As String

' United States
shtnme = "US"
country = "United States"
' ClearLatestData
ClearLatestData shtnme, country ' <-- call the MACRO    
' FilterExportDataByCountry
Application.Run "FilterExportDataByCountry"

' Japan
shtnme = "JP"
country = "Japan"

' ClearLatestData
ClearLatestData shtnme, country ' <-- call the MACRO    
' FilterExportDataByCountry
Application.Run "FilterExportDataByCountry"

End Sub

' ================================================================

Sub ClearLatestData(shtnme As String, country As String)

    Sheets(CStr(shtnme)).Activate
    Columns("A:Z").Select
    Selection.Clear

End Sub
您可以使用一行代码(由于不使用
Activate
select
,因此速度会更快):


工作很有魅力,先生。谢谢你的帮助!非常感谢。
Sheets(CStr(shtnme)).Activate
Columns("A:Z").Select
Selection.Clear
Sheets(shtnme).Columns("A:Z").Clear