根据表格上已有的详细信息填写VBA表格

根据表格上已有的详细信息填写VBA表格,vba,forms,textbox,concatenation,Vba,Forms,Textbox,Concatenation,我需要你再帮我做一件更容易的事。然而,它也可能比看起来更复杂 应在代码后显示的表单: 从上面的表格中可以看出,我想将黄色、红色和绿色方框中的值写入(粘贴)到下面的列表中 3个命令框 我还没有为此目的编写任何完整的代码,彩色图片只是作为一个没有代码的示例 这就是我到目前为止的想法: Private Sub CommandButton6_Click() sMo = lstmonth vDte = sMo & "1, " & cboyear vMo = Month(vDte) '

我需要你再帮我做一件更容易的事。然而,它也可能比看起来更复杂

应在代码后显示的表单:

从上面的表格中可以看出,我想将黄色、红色和绿色方框中的值写入(粘贴)到下面的列表中 3个命令框

我还没有为此目的编写任何完整的代码,彩色图片只是作为一个没有代码的示例

这就是我到目前为止的想法:

Private Sub CommandButton6_Click()

sMo = lstmonth
vDte = sMo & "1, " & cboyear
vMo = Month(vDte)

'set fiscal month ACTUAL year
If vMo > 4 Then vDte = DateAdd("yyyy", -1, vDte)

TextBox2 = TextBox1.Value & Format(vDte, "mmyy")
TextBox3 = "Sales Rebate Due - " & UCase(Format(vDte, "mmm yyyy"))

End Sub
我假设它是某种连接函数,但我一直在思考如何将月份转换为数字以及如何确保年份与财年月份相对应,例如2017年7月但2018年1月,尽管财年框仅显示财年结束的年份

有人能帮忙吗


非常感谢您。

您不希望该逻辑隐藏在某些按钮单击逻辑中

制作一个专用函数:获取一个
Date
参数,并返回一个表示已格式化会计日历日期的字符串-不能使用标准的
VBA.DateTime
函数,因为这些函数在“civil calendar”上运行,而“civil calendar”与您的会计期间不一致

一种方法是使用12个位置阵列来保存每个周期使用的偏移量:

Public Function GetFiscalCalendarPeriod(ByVal value As Date) As String

    Dim monthPeriods As Variant
    monthPeriods = Array(9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8)

    Dim yearOffsets As Variant
    yearOffsets = Array(-1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0)

    Dim index As Long
    index = Month(value) - 1 'implicitly sized array is 0-based

    Dim periodMonth As Long
    periodMonth = monthPeriods(index)

    Dim periodYear As Long
    periodYear = Year(value) + yearOffsets(index)

    GetFiscalCalendarPeriod = Format$(periodMonth, "00") & Right$(Format$(periodYear, "0000"), 2)

End Function
通过这种方式,您可以轻松获得给定任何日期的“会计期间”,无论您在哪里需要这种逻辑


在您的对话框中,您将使用例如
2018-07-01
aka“July 2018”,函数将返回一个字符串,例如
“0318”
,因为2018年7月是2018财年的第三个期间;给它
2018-02-01
aka“2018年2月”,函数返回
“1017”
,因为这是2017财年的第10个周期。

我还没有为此编写任何代码-那么现在问还为时过早。请拿着这本书读一读。看看如何帮助你对你遇到的具体问题做出一个很好的描述。请参阅标题,其中说明您在填充表单字段时遇到问题,但您的问题是,您正在寻找一位提供将日历月号转换为会计日历月号的代码的人员。你有没有试过写一个函数来解决这个问题?也就是说,它的示例代码可以帮助你为表单字段问题找到一个解决方案。这样看起来更好吗?非常感谢。非常令人印象深刻。我一点也不这么想。为我打开新的视角。@Brenda,我的荣幸!请参阅我的个人资料以获取其他有用的链接;我有一个博客,在那里我上传了各种VBA思想,主要是关于抽象功能和编写面向对象的VBA代码(可以说是更高级的主题),但也更新了Rubberduck项目的进度。干杯