我正在学习使用VBA,并且必须对我目前正在从事的语言项目具有相当的创新性。希望您能提供帮助!
我正在建立一个提供4种不同语言的词汇表,人们必须能够从这4种语言中选择任意几种。
因此,我建立了一个“起始页”,可以在其中选择源语言和目标语言。
我的目标: -单击源语言=>单击目标语言 -宏将用户发送到所选源语言的“内容”列表(例如,Content_FR工作表) -同时,“术语表”中的列表应将“目标语言”过滤为所选语言(例如英语)。 -当用户单击“内容表”中的特殊字段时,会将其发送到“过滤条件列表”。
一切就绪,我只是停留在2种开始条件上:在宏将我发送到“内容”或“术语表”工作表之前,我只能单击一个字段。 您是否有办法将这两个VBA融合在一起?当然,即使我必须为每种可能的语言对都制作一个宏。
我希望这已经足够清楚了……我已经在这个文件中游泳了很久(淹没了?),我不确定如何解释它。
我非常希望你们中的一个有一个聪明的主意可以帮助我;)
(不知道如何附加文件,因此我只是在这里将其上传:[URL = http://www.k-upload.fr/afficher-fichier-2018-10-21-1b9b7bf03fichetermino.xlsm.html][IMG]http://file.k-upload.com/k-upload_fr.png[/IMG][/URL])。
答案 0 :(得分:0)
我已经尝试并花了一些时间来查看您的问题是否有解决方案。
答案是否定的,您不能同时操作两个按钮(两个不同的代码同时/并行工作)。
因此,您不能按一个按钮再单击另一个按钮。 Excel需要执行一个代码并完成它。然后就可以开始下一个了。
假设我从工作表“起始页”开始。我按“英语”,该代码可以将我发送到“ Sommaire_EN”工作表。但是到此为止。原因是Excel(VBA应用程序)不知道您想先做什么。在我进入“ Sommaire_EN”工作表时,代码不知道我要按的内容,因为您还没有决定任何事情(经济还是促销)。
所以我在想,也许我可以暂停由“英语”按钮触发的代码,然后单击另一个按钮“经济”,然后恢复我的第一个代码...不能。第一个代码需要“完成”,然后您可以执行下一个代码。
一种解决方案可能是单击“英语”,然后弹出一个窗体/列表,您可以在其中选择类别词(“促销”)。这是更复杂的方法,我认为它不容易维护但可行...
作为奖励,我清理了您的工作簿,并提供了一些评论:
Sheets("Synthèse").Select
”中的选择语句替换为
Worksheets("Synthèse").Activate
,因为应避免选择,但
宏记录器会自动使用它。您的工作表“Synthèse”中存在一些错误...
总体而言,布局和工作确实很好,易于遵循。我只能猜测您必须花费多少时间。我喜欢人们互相教teach的时候!
答案 1 :(得分:0)
回答您的问题:)
1。 -我认为这是专注于目标语言的好方法。但是,我认为没有必要再次选择(,用户可以在其中选择目标语言,这将自动在“合成”文件中过滤目标语言。)。 我认为您可以在“起始页”上选择目标语言时进行过滤。还将节省您很多维护工作(否则,您需要链接另外16个按钮)...
从“起始页”进行过滤,这是我尝试在编辑的工作簿中实现的。当用户选择一种语言时,将从“起始页”中过滤出目标语言和源语言。在Dropbox链接中(在前面的评论部分中),您将找到更改后的工作簿,然后可以下载它:),如果您无法下载它,我还将在所有答案中发布所有代码,以便您可以将其复制并添加(但是您需要将每个子代码链接到正确的按钮。
2。 -是的首先选择合成表,然后进行筛选,最后将人引导到内容表。它应该运行得如此之快,以至于大多数人不会注意到发生了过滤部分。
Worksheets("Synthèse").Activate 'Select the synthese sheet to filter.
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"English" 'Filter synthese sheet
Worksheets("Sommaire_EN").Activate 'Go to content sheet
3。 -不(这只是我身边的通知)。如果您不想,我认为不需要。如果有很多代码,并且计划通过复杂的交互来编写更多代码,则绝对不应有任何select语句(it will reduce potential errors when you have pages of code)。但是有了这个简单的代码,我就不会了。现在的回报很小,值得花时间:)。 select的好处是易于理解和跟踪正在发生的事情。乍一看,另一个需要更多的努力,至少我是这样认为的。
我认为我们在同一条道路上。
对于“开始”页面上的每个按钮,
我将此代码添加到了工作簿中的每个按钮(对于每个内容表,我都更改为“正确的语言”。)
Sub SommaireEN()
'
' SommaireEN Macro
'
'
Worksheets("Synthèse").Activate 'Activate the Synthese sheet
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"English" 'Since you click the button English, it will filter language english
Worksheets("Sommaire_EN").Activate 'Go to sheet Sommaire_EN.
End Sub
Alt + F11进入此视图。每个代码都链接到其相应的按钮。
因此,当用户单击“开始页面”(例如Deutschen)上的按钮时,“合成”工作表将筛选为所选的语言,并且您将被定向到Sommaire_DE的内容表。 注意,它将不会在合成表中选择任何专业字段,只会选择语言。
用户将最终进入Deutsch表,并且当他单击特殊字段时,例如Wirtschaft ...
...然后,合成工作表也将被更新,用户将在这里结束:)
随时问任何问题:)
答案 2 :(得分:0)
Sommaire_DE的代码:
Sub Naturschutz()
'
' Naturschutz Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Deutsch"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Naturschutz"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Naturschutz"
Range("C3").Select
End Sub
Sub ClearFilterDE()
'
' ClearFilter Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = ""
End Sub
Sub Umweltbewusstsein()
'
' Umweltbewusstsein Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Deutsch"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Umweltbewusstsein"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Umweltbewusstsein"
Range("C3").Select
End Sub
Sub Energieeffizienz()
'
' Energieeffizienz Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Deutsch"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Energieeffizienz"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Energieeffizienz"
Range("C3").Select
End Sub
Sub Langlebigkeit()
'
' Langlebigkeit Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Deutsch"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Langlebigkeit"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Langlebigkeit"
Range("C3").Select
End Sub
Sub Gesetzliches()
'
' Gesetzliches Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Deutsch"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Gesetzliches"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Gesetzliches"
Range("C3").Select
End Sub
Sub Moderne_Technologien()
'
' Moderne Technologien Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Deutsch"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Moderne Technologien"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Moderne Technologien"
Range("C3").Select
End Sub
Sub Wirtschaft()
'
' Wirtschaft Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Deutsch"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Wirtschaft"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Wirtschaft"
Range("C3").Select
End Sub
Sub Filmproduktion()
'
' Filmproduktion Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Deutsch"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Filmproduktion"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Filmproduktion"
Range("C3").Select
End Sub
Sub Promotionskampagne()
'
' Promotionskampagne Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Deutsch"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Promotionskampagne"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Promotionskampagne"
Range("C3").Select
End Sub
Sub Interne_Struktur()
'
' Interne Struktur Macro
'
'
Worksheets("Synthèse").Activate
Range("A5").Select
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Deutsch"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Interne Struktur"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Interne Struktur"
Range("C3").Select
End Sub
Sub ChangerTitreDE()
'
' ChangerTitre Macro
'
'
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Economy"
Range("C3").Select
End Sub
Sommaire_EN的代码:
Sub Preservation()
'
' Preservation Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"English"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Preservation"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Preservation"
Range("C3").Select
End Sub
Sub ClearFilter()
'
' ClearFilter Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = ""
End Sub
Sub Environmental_education()
'
' Environmental education Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"English"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Environmental education"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Environmental education"
Range("C3").Select
End Sub
Sub Energy_efficiency()
'
' Energy efficiency Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"English"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Energy efficiency"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Energy efficiency"
Range("C3").Select
End Sub
Sub Sustainability()
'
' Sustainability Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"English"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Sustainability"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Sustainability"
Range("C3").Select
End Sub
Sub Legislation()
'
' Legislation Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"English"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Legislation"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Legislation"
Range("C3").Select
End Sub
Sub New_technology()
'
' New technology Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"English"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"New technology"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "New technology"
Range("C3").Select
End Sub
Sub Economy()
'
' Economy Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"English"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Economy"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Economy"
Range("C3").Select
End Sub
Sub Production()
'
' Production Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"English"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Production"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Production"
Range("C3").Select
End Sub
Sub Promotion()
'
' Promotion Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"English"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Promotion"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Promotion"
Range("C3").Select
End Sub
Sub Organizational_structure()
'
' Organizational structure Macro
'
'
Worksheets("Synthèse").Activate
Range("A5").Select
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"English"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Organizational structure"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Organizational structure"
Range("C3").Select
End Sub
Sub ChangerTitreEN()
'
' ChangerTitre Macro
'
'
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Economy"
Range("C3").Select
End Sub
Sommaire_SP的代码:
Sub Preservación()
'
' Preservación Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Español"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Preservación"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Preservación"
Range("C3").Select
End Sub
Sub ClearFilterSP()
'
' ClearFilter Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = ""
End Sub
Sub Educación_ambiental()
'
' Educación ambiental Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Español"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Educación ambiental"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Educación ambiental"
Range("C3").Select
End Sub
Sub Eficiencia_energética()
'
' Eficiencia energética Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Español"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Eficiencia energética"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Eficiencia energética"
Range("C3").Select
End Sub
Sub Sostenibilidad()
'
' Sostenibilidad Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Español"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Sostenibilidad"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Sostenibilidad"
Range("C3").Select
End Sub
Sub Legislación()
'
' Legislación Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Español"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Legislación"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Legislación"
Range("C3").Select
End Sub
Sub Nuevas_tecnologías()
'
' Nuevas tecnologías Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Español"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Nuevas tecnologías"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Nuevas tecnologías"
Range("C3").Select
End Sub
Sub Economía()
'
' Economía Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Español"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Economía"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Economía"
Range("C3").Select
End Sub
Sub Producción()
'
' Producción Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Español"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Producción"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Producción"
Range("C3").Select
End Sub
Sub Fomento()
'
' Fomento Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Español"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Fomento"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Fomento"
Range("C3").Select
End Sub
Sub Modo_de_funcionamiento()
'
' Modo de funcionamiento Macro
'
'
Worksheets("Synthèse").Activate
Range("A5").Select
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Español"
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=2, Criteria1:= _
"Modo de funcionamiento"
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Modo de funcionamiento"
Range("C3").Select
End Sub
Sub ChangerTitreSP()
'
' ChangerTitre Macro
'
'
Range("C1").Select
Selection.ClearContents
ActiveCell.FormulaR1C1 = "Economy"
Range("C3").Select
End Sub
起始页代码
Sub SommaireEN()
'
' SommaireEN Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"English"
Worksheets("Sommaire_EN").Activate
End Sub
Sub SommaireSP()
'
' SommaireSP Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Español"
Worksheets("Sommaire_SP").Activate
End Sub
Sub SommaireDE()
'
' SommaireDE Macro
'
'
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Deutsch"
Worksheets("Sommaire_DE").Activate
End Sub
Sub GlossaireFR()
'
' GlossaireFR Macro
Worksheets("Synthèse").Activate
ActiveSheet.Range("$A$4:$C$11652").AutoFilter Field:=1, Criteria1:= _
"Français"
Worksheets("Sommaire_FR").Activate
End Sub