Vba 用于放置数据的用户表单

Vba userform to place data

好的,我有一个 excel 工作簿可以跟踪评分信息。 有 12 个 sheet,每个月一个。 在这些 sheet 上 b2:b54 包含办公地点。 F1:I1 包含标题 "audit 1" "audit 2" 等等。

当这本书打开时,用户窗体会初始化为月份的 12 个按钮。 我将以 March 为例。当用户单击 March 按钮时,他们将转到 March sheet.

一旦 March sheet 打开,另一个用户表单就会初始化。

此用户表单包含 2 个列表框、1 个文本框和一个提交按钮。

这个想法是,用户将从列表框 1 中选择办公室位置,这将确定放置分数的行。

用户将 select 列表框 2 中的审核类型,这将确定要放置分数的列。

用户将在文本框 1 中输入分数,这将是输入所需的数据。

按下 "submit" 按钮后,分数将放置在所选办公室和审计类型的交集处。

我正在尝试一次处理这一块。所以这是我的第一期:

我不知道如何将文本框 1 中的数据添加到包含列表框 1 的 selection 的行和包含列表框 2 的 selection 的列的交集。

以下代码是我目前正在尝试但没有成功的代码:

私人订阅 Marsubmit_Click()

Dim MarR 作为字符串

Dim MarC As Integer

    Dim M_A As String

        Dim M_B As String

        Dim M_S As String

        Dim M_C As Range

    Dim C As Integer

    Dim R As Integer



    R = 2

    C = 2







        M_S = Marscbx.Value

            M_B = Formboxmar.Value

                M_A = Officeboxmar.Value

                MarC = 2



                If M_B = ActiveSheet.Range("F1").Value Then MarC = MarC + 4

                If M_B = ActiveSheet.Range("G1").Value Then MarC = MarC + 5

                If M_B = ActiveSheet.Range("H1").Value Then MarC = MarC + 6

                If M_B = ActiveSheet.Range("I1").Value Then MarC = MarC + 7







               If M_A = ActiveSheet.Cell(C, R).Value Then MarR = "True"

               If MarR = "True" Then M_C = ActiveSheet.Cell(C, MarC)

            Do Until MarR = "True"

               C = C + 1

               Loop



                ActiveSheet.Range(M_C).Value = M_S

一个非常缩小的例子。 ListIndex表示ComboBox中被选中项的编号,从0开始。只要把两个+1都改一下就可以得到正确的row/column。例如,如果 Audit1 转到 F 列,Audit2 转到 G,Audit3 转到 I,则在审计组合框中写入 ComboBoxAudit.ListIndex + 6.

Private Sub Marsubmit_Click()
    Dim C1 As Integer
    Dim C2 As Integer
    Dim T1 As String

    C1 = ComboBox1.ListIndex + 1
    C2 = ComboBox2.ListIndex + 1
    T1 = TextBox1.Value

    Worksheets("Mar").Cells(C1, C2) = T1
End Sub