如何解决VBA:打开输入框,插入月份/年份并返回上个月的年份
一段时间以来,我一直在尝试配置VBA代码。这应该很简单,但是因为我在将所有代码组合在一起时遇到困难。
我想做的是编写一个VBA代码,在该代码中执行代码,然后弹出一个输入框,然后在其中输入月份和年份,返回的是输入日期之前的月份年份
例如,如果我在输入框中输入7/2020,则返回值为6/2020。
到目前为止,我的代码如下:
Sub insertDateColumn()
Dim myValue As Variant
Worksheets("Sheet2").Columns("G:G").Insert
myValue = InputBox("Month Year")
上面的代码将插入一列并打开一个输入框。从那里我不完全确定如何包括代码,我将从输入框中获取值并减去一个月。到目前为止,我已经提出了一个使用DateSerial
函数输入上一个月和一年的代码。
Sheet2.Range("G2") = DateSerial(Year(Date),Month(Date) - 1,0)
`
任何建议,帮助或参考将不胜感激!
谢谢
解决方法
您可以使用Split
函数来完成所需的操作:
Private Sub CommandButton1_Click()
Dim myValue As String
Dim myDate As Variant
myValue = InputBox("Month Year")
myDate = Split(myValue,"/") 'break apart user input
myDate = DateSerial(Val(myDate(1)),Val(myDate(0)),1) 'make it into a real date
myDate = DateAdd("m",-1,myDate) 'subtract a month,allowing for rolling to previous year
myDate = Month(myDate) & "/" & Year(myDate) 'rebuild in correct format
Sheet2.Range("G2") = myDate
Sheet2.Range("G3") = myDate
End Sub
当然,验证用户输入并增强代码以处理可能遇到的任何错误是明智的。
,Dim myValue As String
myValue = InputBox("Month Year")
Dim Mth,Yr As Integer
Dim a,b,Result As String
a = Left(myValue,2)
b = Right(myValue,4)
If a = "01" Then
Yr = CInt(b) - 1
Result = "12" & "/" & Yr
Else
Mth = CInt(a) - 1
Result = Mth & "/" & b
End If
MsgBox Result
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。