Excel 双条件VBA

Excel 双条件VBA,excel,vba,Excel,Vba,我只是在学习使用VBA,对于我目前正在进行的一个语言项目,我必须非常创新。我希望你能帮忙 我正在建立一个提供4种不同语言的词汇表,人们必须能够从这4种语言中选择任意两种语言 所以我建立了一个“起始页”,在那里人们可以选择源语言和目标语言 我的目标是: -单击源语言=>单击目标语言 -宏将用户发送到所选源语言的内容列表(例如,内容表) -同时,术语表中的列表应将目标语言过滤为所选语言(例如英语)。 -当用户单击内容表中的专业字段时,它会将用户发送到筛选的术语列表 一切都准备就绪,我只是被困在双向启

我只是在学习使用VBA,对于我目前正在进行的一个语言项目,我必须非常创新。我希望你能帮忙

我正在建立一个提供4种不同语言的词汇表,人们必须能够从这4种语言中选择任意两种语言

所以我建立了一个“起始页”,在那里人们可以选择源语言和目标语言

我的目标是: -单击源语言=>单击目标语言 -宏将用户发送到所选源语言的内容列表(例如,内容表) -同时,术语表中的列表应将目标语言过滤为所选语言(例如英语)。 -当用户单击内容表中的专业字段时,它会将用户发送到筛选的术语列表

一切都准备就绪,我只是被困在双向启动条件下:在宏将我发送到内容或术语列表表之前,我只能单击一个字段。 你知道如何将这两个VBA融合在一起吗?当然,即使我必须为每种可能的语言组合制作一个宏

我希望这足够清楚。。。我已经在这个文件里游泳(溺水?)很久了,我不知道该怎么解释

我非常希望你们中的一位能有一些好主意来帮助我;)


(不知道如何附加文件已附加,所以我只是将其上载到此处:[URL=)。

我已经尝试并花了一些时间来查看您的问题是否有解决方案

答案是否定的,你不能让两个按钮同时工作(两个不同的代码同时工作/并行)


因此,您不能按下一个按钮,然后开始另一个按钮单击。 Excel需要执行一个代码并完成它,然后才能启动下一个代码

假设我从工作表“起始页”开始。我按“英语”键,代码可以将我发送到“Sommaire_EN”工作表。但它到此结束。原因是Excel(VBA应用程序)不知道您要提前做什么。代码不知道我在“Sommaire_EN”工作表时要按什么,因为您还没有决定任何事情(经济或晋升)

所以我在想,也许我可以暂停由“英语”按钮触发的代码,然后点击另一个按钮“经济”,然后恢复我的第一个代码…它不能。第一个代码需要“完成”,然后你可以执行下一个代码

一个解决方案是点击“英语”,然后弹出一个表格/列表,在那里你可以选择你的分类词(“促销”)。这是一个更复杂的方式,我不认为这将很容易维护,但是可行的

作为奖励,我清理了您的工作簿,并发表了一些评论:

  • 选择语句作为
    表单(“Synthèse”)。选择将替换为
    
    工作表(“Synthèse”)。激活
    ,因为应避免选择,但 宏记录器自动使用它
  • 我为每个Sommaire_语言工作表创建了一个模块,所以英语有一个模块,西班牙语有一个模块,等等。这样更容易找到代码
  • 我将所有按钮链接到所有语言的相应单词
  • 不要更改工作表名称…代码将停止工作(Content\u EN->Sommaire\u EN)
  • 我为“开始页”按钮添加了过滤器。当您单击语言按钮时,工作表合成器将仅对该语言进行过滤,并将您发送到该语言的Sommaireèuuuu2; sheet
您的工作表“Synthèse”中有一些错误

总的来说,布局和工作都做得很好,很容易理解。我只能猜你一定花了多少时间。我喜欢人们互相教导!!回答你的问题:)

1.-我认为这是一个关注目标语言的好方法。但是,我认为没有必要再次选择(在那里,用户可以选择目标语言,这将自动过滤Synthese文件中的目标语言)。。 我认为当你在“开始页面”选择目标语言时,你可以进行过滤。这也将为你节省大量的维护工作(否则你需要链接另外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语句()。但是有了这个轻代码,我就不会了。现在的回报非常小,让时间变得值得:)。select的好处是,它很容易理解和跟踪正在发生的事情。另一个好处是,至少在我看来,要想第一眼就理解,需要付出更多的努力


我认为我们在同一条道路上

对于起始页上的每个按钮

我将此代码添加到工作簿中的每个按钮(对于每个内容页,我将更改为“正确的语言”)

Alt+F11以访问此视图。每个代码都链接到其相应的按钮

因此,当用户单击“起始页”(例如Deutschen)上的按钮时,Synthese工作表将过滤到所选语言,您将被引导到Sommaire_DE的内容表。请注意,它不会在
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
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
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
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