Excel dropdownlist中的值按相反顺序显示

Excel dropdownlist中的值按相反顺序显示,excel,vba,Excel,Vba,在使用工作表更改事件的我的VBA程序中,当用户选择财政年度时,其相应的月份需要显示在dropdownlist中(例如从20年4月到21年3月) 但在dropdownlist中,首先显示年份,然后显示月份(12月20日),但我的要求是先显示月份,然后显示年份(12月20日)。如何解决这个问题 Set monthrange = ws1.Range(Cells(Target.Row, ws1.Range("CO9:CO9").Value), Cells(Target.Row, _

在使用工作表更改事件的我的VBA程序中,当用户选择财政年度时,其相应的月份需要显示在dropdownlist中(例如从20年4月到21年3月)

但在dropdownlist中,首先显示年份,然后显示月份(12月20日),但我的要求是先显示月份,然后显示年份(12月20日)。如何解决这个问题

Set monthrange = ws1.Range(Cells(Target.Row, ws1.Range("CO9:CO9").Value), Cells(Target.Row, _ ws1.Range("CP9:CP9").Value))

splittings = ws1.Cells(Target.Row, Target.Column).Value

splitting(1) = Mid(splittings, 3, 2)

splitting(2) = Mid(splittings, 6, 2)


validationString = "Apr" & splitting(1) & ", " & _
                   "May" & splitting(1) & ", " & _
                   "Jun" & splitting(1) & ", " & _
                   "Jul" & splitting(1) & ", " & _
                   "Aug" & splitting(1) & ", " & _
                   "Sep" & splitting(1) & ", " & _
                   "Oct" & splitting(1) & ", " & _
                   "Nov" & splitting(1) & ", " & _
                   "Dec" & splitting(1) & ", " & _
                   "Jan" & splitting(2) & ", " & _
                   "Feb" & splitting(2) & ", " & _
                   "Mar" & splitting(2)
                   
With monthrange.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
                        Operator:=xlBetween, _
                        Formula1:=validationString
End With


这是一个有趣的例子。我测试了一下,结果也一样。Excel似乎隐式地将“Apr20”(代码中没有“-”)转换为日期4月20日。问题是,在选择该值后,您希望如何处理该值?你想要它作为一个字符串(即“Apr-20”)还是作为一个日期(这样你就可以在其他地方使用它)?一种快速而肮脏的方法是在验证字符串中使用“Apr-2020,May-2020,…”。我希望它作为一个字符串。年份是动态的,根据当前日期和年份进行更改。所以我不能硬编码。我试过在月份和年份之间使用“-”,仍然是同一个问题。您能给出一个“拆分”输入字符串(从中获取年份)的示例吗?Splittings=“FY20-21”,其中拆分(1)=中间(拆分,3,2)是20,拆分(2)=中间(拆分,6,2)是21岁。你在2000年之前有过几年的经历吗?如果没有,您可以使用“Apr-20”和拆分(1)等创建“Apr-2020”。问题是Excel“有益地”将字符串“Apr20”转换为2020年4月20日(现在是2020年)等(因此“Mar21”也转换为2020年3月21日)。半途而废的解决方法:如果您的验证字符串是“'Apr20,'May20,等等”。。。请注意,在每个月的前面加上单引号“'”,您将在单元格中只看到Apr20(但单引号将出现在下拉列表的文本中)。这是一个有趣的例子。我测试了一下,结果也一样。Excel似乎隐式地将“Apr20”(代码中没有“-”)转换为日期4月20日。问题是,在选择该值后,您希望如何处理该值?你想要它作为一个字符串(即“Apr-20”)还是作为一个日期(这样你就可以在其他地方使用它)?一种快速而肮脏的方法是在验证字符串中使用“Apr-2020,May-2020,…”。我希望它作为一个字符串。年份是动态的,根据当前日期和年份进行更改。所以我不能硬编码。我试过在月份和年份之间使用“-”,仍然是同一个问题。您能给出一个“拆分”输入字符串(从中获取年份)的示例吗?Splittings=“FY20-21”,其中拆分(1)=中间(拆分,3,2)是20,拆分(2)=中间(拆分,6,2)是21岁。你在2000年之前有过几年的经历吗?如果没有,您可以使用“Apr-20”和拆分(1)等创建“Apr-2020”。问题是Excel“有益地”将字符串“Apr20”转换为2020年4月20日(现在是2020年)等(因此“Mar21”也转换为2020年3月21日)。半途而废的解决方法:如果您的验证字符串是“'Apr20,'May20,等等”。。。请注意,在每个月的前面加上单引号“'”,您将在单元格中只看到Apr20(但单引号将出现在下拉列表的文本中)。