在Excel中,如何让一行代码检查下拉选择的值。那么,如何检查该值与另一个值

在Excel中,如何让一行代码检查下拉选择的值。那么,如何检查该值与另一个值,excel,vba,Excel,Vba,我正在尝试创建一个宏,它首先允许用户根据下拉列表轻松地将数据传输到另一张工作表,以选择月份。我希望用户能够在我创建的字段中输入日期,然后使用工作表上的按钮首先选择要粘贴的月份,然后确认粘贴。在一张名为“DB-Ref Monthly”的表格上,我有12个命名范围,从Ref_Jan到Ref_Dec。我正在整理这些片段,但我的测试程序仍停留在这里: Sub Button8_Click() Dim MonthSelector As Range Dim Ref_May As Range

我正在尝试创建一个宏,它首先允许用户根据下拉列表轻松地将数据传输到另一张工作表,以选择月份。我希望用户能够在我创建的字段中输入日期,然后使用工作表上的按钮首先选择要粘贴的月份,然后确认粘贴。在一张名为“DB-Ref Monthly”的表格上,我有12个命名范围,从Ref_Jan到Ref_Dec。我正在整理这些片段,但我的测试程序仍停留在这里:

   Sub Button8_Click()


Dim MonthSelector As Range
Dim Ref_May As Range

    If Range("MonthSelector") = Range("Ref_May") Then
            Sheets("DB - Ref Current").Range("Ref_Current").Copy
            Sheets("DB - Ref Monthly").Range("Ref_May").PasteSpecial xlPasteAll

        Application.CutCopyMode = False
        Application.ScreenUpdating = True
    Else
    End If




End Sub

我目前的计划是每月引用12条if语句,因为我已经将代码的复制/粘贴部分放在了另一张表中。如果我在这件事上完全错了,我不会介意一些指导。如果我不清楚,请告诉我,并可以提供其他信息。

使用循环迭代数月,则无需重复代码逻辑

Dim arrMonth As New Collection
Dim idx As Integer
Dim val As String

Call arrMonth.Add("Jan")
Call arrMonth.Add("Feb")
Call arrMonth.Add("Mar")
'..etc..
Call arrMonth.Add("Dec")

For idx = 1 To arrMonth.Count
    val = arrMonth.Item(idx)
    Call MsgBox(idx & "=" & val)
Next
假设
Range(“MonthSelector”)
是一个单元格,它有一个月列表(一月、二月、三月等)中的值,并且您得到了相应的命名范围
Ref\u Jan
Ref\u Feb
Ref\u Mar
,您可以这样做:

Sub Button8_Click()
    Sheets("DB - Ref Current").Range("Ref_Current").Copy
    Sheets("DB - Ref Monthly").Range("Ref_" & Range("MonthSelector").Value).PasteSpecial xlPasteAll

    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub

首先,我认为你可以对月份进行硬编码,而不是添加参考表。这是一个Excel应用程序,而不是银行软件,而且这个月不太可能很快改变。第二,你想用月值做什么?如果你每个月都在做完全不同的事情,那么有12条If语句是有意义的。如果你每个月都在做几乎相同的事情,那可能只是多余的。我建议将
Application.Cells(“L6”)=“HEllo world”
替换为一些代表您实际尝试做的事情。我不确定您所说的硬编码是什么意思。我刚刚将它们命名为Ref_u作为我的变量。至于我要做的,我有一个数据集,我想复制并粘贴到另一张工作表上的某个位置,但我想根据在下拉列表中选择的月份更改该目的地。我将用我目前为止所做的工作来更新我的原始代码。那么,
Range(“MonthSelector”)
Range(“Ref\u May”)
到底指的是什么?
Range(“MonthSelector”)
单元格是否链接到下拉列表的输出?
范围(“Ref\u May”)
是您要粘贴数据的位置吗?为什么这两者是相等的?另外,顶部的两个
Dim
语句是用来做什么的?这些值没有在任何地方使用。感谢您的帮助Josh,range month选择器实际上是一个链接到下拉列表输出的单元格。而ref_may的范围就是我想要粘贴日期的地方。我不太确定我是否弄错了语言,但在我脑海中它们相等的原因是,如果我在下拉列表中选择一个月,该单元格的值将等于我所指范围的名称。这是我错的地方吗?至于那些模糊的陈述,也许我不需要它们?我还是VBA的新手,我仍然不确定我需要申报什么和不需要申报什么