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
好的,我有一个 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