Vba 编写这样重复代码的最佳方法是什么?
下面是我的代码,它打开一个Monar实例,并使用Monar执行一些操作(Monar是一个数据挖掘工具) 我必须重复下面的代码,每次只需更改几个参数,有没有办法通过编程实现这一点?我想知道最有效的方法Vba 编写这样重复代码的最佳方法是什么?,vba,excel,Vba,Excel,下面是我的代码,它打开一个Monar实例,并使用Monar执行一些操作(Monar是一个数据挖掘工具) 我必须重复下面的代码,每次只需更改几个参数,有没有办法通过编程实现这一点?我想知道最有效的方法 a = MonarchObj.SetReportFile(rawdataS10, False) openModel = MonarchObj.SetModelFile(freeKidsModel) MonarchObj.CurrentFilter = "Under 60"
a = MonarchObj.SetReportFile(rawdataS10, False)
openModel = MonarchObj.SetModelFile(freeKidsModel)
MonarchObj.CurrentFilter = "Under 60"
SummerDateShow = MonarchObj.SetFieldVisible("Date2", False)
SummerDateHide = MonarchObj.SetFieldVisible("Date", True)
ExportTOS = MonarchObj.JetExportTable(saveDir, "FreeKidsS10", 0)
MonarchObj.CloseAllDocuments
我正在更改的部分的一个示例是“60岁以下”、“Freekids10”以及日期和日期2字段
如果简单地复制和粘贴这段代码是最有效的代码,你可以告诉我走开你可以创建一个用户定义的函数-谷歌上有很多例子-这里有一个-
你可以创建一个用户定义的函数-谷歌上有很多例子-这里有一个-
您可以创建一个将变量字段作为参数的过程,然后在需要复制和粘贴的地方调用该过程。该方法的签名如下:
Public Sub DataMiningMethod(ByVal modelFile as object, _
ByVal currentFilter as String, _
ByVal date1 as Boolean, _
ByVal date2 as Boolean, _
ByVal exportTableName as String)
Public Sub DataMiningMethod(ByVal modelFile as object, _
ByVal currentFilter as String, _
ByVal date1 as Boolean, _
ByVal date2 as Boolean, _
ByVal exportTableName as String)
a = MonarchObj.SetReportFile(rawdataS10, False)
openModel = MonarchObj.SetModelFile(modelFile )
MonarchObj.CurrentFilter = currentFilter
SummerDateShow = MonarchObj.SetFieldVisible("Date2", date2 )
SummerDateHide = MonarchObj.SetFieldVisible("Date", date1 )
ExportTOS = MonarchObj.JetExportTable(saveDir, exportTableName , 0)
MonarchObj.CloseAllDocuments
End Sub
因此,整个方法如下所示:
Public Sub DataMiningMethod(ByVal modelFile as object, _
ByVal currentFilter as String, _
ByVal date1 as Boolean, _
ByVal date2 as Boolean, _
ByVal exportTableName as String)
Public Sub DataMiningMethod(ByVal modelFile as object, _
ByVal currentFilter as String, _
ByVal date1 as Boolean, _
ByVal date2 as Boolean, _
ByVal exportTableName as String)
a = MonarchObj.SetReportFile(rawdataS10, False)
openModel = MonarchObj.SetModelFile(modelFile )
MonarchObj.CurrentFilter = currentFilter
SummerDateShow = MonarchObj.SetFieldVisible("Date2", date2 )
SummerDateHide = MonarchObj.SetFieldVisible("Date", date1 )
ExportTOS = MonarchObj.JetExportTable(saveDir, exportTableName , 0)
MonarchObj.CloseAllDocuments
End Sub
您可以创建一个将变量字段作为参数的过程,然后在需要复制和粘贴的地方调用该过程。该方法的签名如下:
Public Sub DataMiningMethod(ByVal modelFile as object, _
ByVal currentFilter as String, _
ByVal date1 as Boolean, _
ByVal date2 as Boolean, _
ByVal exportTableName as String)
Public Sub DataMiningMethod(ByVal modelFile as object, _
ByVal currentFilter as String, _
ByVal date1 as Boolean, _
ByVal date2 as Boolean, _
ByVal exportTableName as String)
a = MonarchObj.SetReportFile(rawdataS10, False)
openModel = MonarchObj.SetModelFile(modelFile )
MonarchObj.CurrentFilter = currentFilter
SummerDateShow = MonarchObj.SetFieldVisible("Date2", date2 )
SummerDateHide = MonarchObj.SetFieldVisible("Date", date1 )
ExportTOS = MonarchObj.JetExportTable(saveDir, exportTableName , 0)
MonarchObj.CloseAllDocuments
End Sub
因此,整个方法如下所示:
Public Sub DataMiningMethod(ByVal modelFile as object, _
ByVal currentFilter as String, _
ByVal date1 as Boolean, _
ByVal date2 as Boolean, _
ByVal exportTableName as String)
Public Sub DataMiningMethod(ByVal modelFile as object, _
ByVal currentFilter as String, _
ByVal date1 as Boolean, _
ByVal date2 as Boolean, _
ByVal exportTableName as String)
a = MonarchObj.SetReportFile(rawdataS10, False)
openModel = MonarchObj.SetModelFile(modelFile )
MonarchObj.CurrentFilter = currentFilter
SummerDateShow = MonarchObj.SetFieldVisible("Date2", date2 )
SummerDateHide = MonarchObj.SetFieldVisible("Date", date1 )
ExportTOS = MonarchObj.JetExportTable(saveDir, exportTableName , 0)
MonarchObj.CloseAllDocuments
End Sub
把这段代码放在一个方法中,如果你想更精确的话,把它放在一个类中,每次都用不同的参数对它进行分类,就像
public void mymethod(string currentFilter, bool date2, bool date)
{
a = MonarchObj.SetReportFile(rawdataS10, False)
openModel = MonarchObj.SetModelFile(freeKidsModel)
MonarchObj.CurrentFilter = currentFilter
SummerDateShow = MonarchObj.SetFieldVisible("Date2", date2)
SummerDateHide = MonarchObj.SetFieldVisible("Date", date)
ExportTOS = MonarchObj.JetExportTable(saveDir, "FreeKidsS10", 0)
MonarchObj.CloseAllDocuments
}
把这段代码放在一个方法中,如果你想更精确的话,把它放在一个类中,每次都用不同的参数对它进行分类,就像
public void mymethod(string currentFilter, bool date2, bool date)
{
a = MonarchObj.SetReportFile(rawdataS10, False)
openModel = MonarchObj.SetModelFile(freeKidsModel)
MonarchObj.CurrentFilter = currentFilter
SummerDateShow = MonarchObj.SetFieldVisible("Date2", date2)
SummerDateHide = MonarchObj.SetFieldVisible("Date", date)
ExportTOS = MonarchObj.JetExportTable(saveDir, "FreeKidsS10", 0)
MonarchObj.CloseAllDocuments
}
我看到你正在使用Excel。您可以尝试使用另一个包含数据的工作表,并使用此方法一次获取每一行,例如:
A B C D
1 Under60 FreeKidsS10 Date Date2
2 Under80 FreeKidsS20 DateZ Date3
3 Over80 FreeKidsS30 DateX Date4
您可以更改宏以使用以下内容:
a = MonarchObj.SetReportFile(rawdataS10, False)
openModel = MonarchObj.SetModelFile(freeKidsModel)
MonarchObj.CurrentFilter = 'Sheet2!$A1'
SummerDateShow = MonarchObj.SetFieldVisible('Sheet2!$D1', False)
SummerDateHide = MonarchObj.SetFieldVisible('Sheet2!$C1', True)
ExportTOS = MonarchObj.JetExportTable(saveDir, 'Sheet2!$B1', 0)
MonarchObj.CloseAllDocuments
我不确定确切的代码,但我想你可以沿着这条路线来达到必要的目标我知道你在使用Excel。您可以尝试使用另一个包含数据的工作表,并使用此方法一次获取每一行,例如:
A B C D
1 Under60 FreeKidsS10 Date Date2
2 Under80 FreeKidsS20 DateZ Date3
3 Over80 FreeKidsS30 DateX Date4
您可以更改宏以使用以下内容:
a = MonarchObj.SetReportFile(rawdataS10, False)
openModel = MonarchObj.SetModelFile(freeKidsModel)
MonarchObj.CurrentFilter = 'Sheet2!$A1'
SummerDateShow = MonarchObj.SetFieldVisible('Sheet2!$D1', False)
SummerDateHide = MonarchObj.SetFieldVisible('Sheet2!$C1', True)
ExportTOS = MonarchObj.JetExportTable(saveDir, 'Sheet2!$B1', 0)
MonarchObj.CloseAllDocuments
我不确定确切的代码,但我想你可以沿着这条路线去达到必要的目标