Vba userform用于放置数据

时间:2017-01-25 23:55:58

标签: vba excel-vba listbox userform excel

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

当图书打开时,用户表单会使用12个按钮进行初始化。 我将使用March作为我的榜样。当用户单击March按钮时,它会将它们带到March工作表。

March页面打开后,另一个userform初始化。

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

该想法是用户将从列表框1中的办公室位置中进行选择,该列表框将确定用于放置得分的行。

用户可以从列表框2中选择审核类型,这将决定将得分放入的列。

用户将在textbox1中输入分数,该分数将是输入所需的数据。

按下"提交"按钮,分数将被放置在所选办公室和审核类型的交叉点。

我一次尝试在这一件作品上工作。所以这是我的第一个问题:

我无法弄清楚如何将textbox1中的数据添加到包含listbox 1中的选择的行和包含选择列表框2的列的交集。

以下代码是我现在没有运气的尝试:

Private Sub Marsubmit_Click()

Dim MarR As String

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

1 个答案:

答案 0 :(得分:0)

一个非常萎缩的例子。 ListIndex表示ComboBox中所选项目的编号,从0开始。只需更改+1即可到达正确的行/列。例如,如果Audit1进入F列,审计2到G,审计3到I,那么在ComboBox中进行审计写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