我自己尝试过这个并重新编辑了这个问题。所以我在Excel VBA中完成了UserForm(我已经上传了它的样子
我已使用以下代码将信息从文本框传输到Excel行
'Determine Empty Row
emptyRow= WorksheetFunction.Counta(Range("A:A"))+1
'Transfer into to cells
Cells(emptyRow, 1).Value= NOD_Text.Value
Cells(emptyRow,2).Value=TOD_Text.Value
Cells(emptyRow,3).Value=Program_Text.value
Cells(emptyRow,4).Value=email_Text.value
Cells(emptyRow,5).Value=OPN_Text.value
Cells(emptyRow,6).Value=CPN_Text.Value
我有多张相同的利益相关者(工作表A,工作表B,工作表C,工作表D等),我想根据选中的复选框传输上述信息。例如,如果单击复选框A,B,C,则上述信息将传输到工作表A,B,C。
根据利益相关者的复选框,我不确定如何激活工作表......
If A_Checkbox.Value=True then Worksheets(A).Activate then Cells(emptyRow, 1).Value= NOD_Text.Value
Cells(emptyRow,2).Value=TOD_Text.Value
Cells(emptyRow,3).Value=Program_Text.value
Cells(emptyRow,4).Value=email_Text.value
Cells(emptyRow,5).Value=OPN_Text.value
Cells(emptyRow,6).Value=CPN_Text.Value
不确定上面的代码是否正确,但问题是......如果这个人复选了3个利益相关者(A,B,C)......?我不确定如何编码...
另外,我想把所有信息都放在Master标签中,无论哪个盒子都被取消,但我不知道如何始终保持主标签激活......
我希望这比以前更清楚
答案 0 :(得分:0)
为此,我将使用控件的TAG属性。
在每个文本框的TAG属性中,我会写出粘贴值的单元格引用 - 例如$ B $ 2.
在每个复选框的TAG属性中,我会写一个链接到该控件的工作表名称 - 例如Sheet1。
然后在命令按钮后面我会编写类似这样的代码:
Private Sub CommandButton1_Click()
Dim ctrl As Control
Dim ctrl1 As Control
'Cycle through each control looking for checkboxes.
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CheckBox" Then
'If the checkbox is ticked
If ctrl.Value = True Then
With ThisWorkbook.Worksheets(ctrl.Tag) 'Grab the sheet name from the check box.
'Cycle through each control looking for textboxes.
For Each ctrl1 In Me.Controls
If TypeName(ctrl1) = "TextBox" Then
.Range(ctrl1.Tag) = ctrl1.Value 'Grab the cell address from the text box.
End If
Next ctrl1
End With
End If
End If
Next ctrl
End Sub
答案 1 :(得分:0)
你需要在if和之后知道空的单元格中激活工作表:
If A_Checkbox.Value=True then
Worksheets("A").Activate
ElseIf B_Checkbox.Value=True then
Worksheets("B").Activate
End If
emptyRow=Activesheet.range("A1000000").end(XlUp).Row+1
Cells(emptyRow,2).Value=TOD_Text.Value
答案 2 :(得分:0)
这应该可以解决问题:
Private Sub AddButton_Click()
Dim CB As Control
For Each CB In UserForm1.Controls
If TypeName(CB) = "CheckBox" Then
If CB.Value = True Then
ShtNm = CB.Caption
With ActiveWorkbook.Sheets(ShtNm)
'Determine Empty Row
emptyRow = .Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1
'Transfer into to cells
.Cells(emptyRow, 1).Value = NOD_Text.Value
.Cells(emptyRow, 2).Value = TOD_Text.Value
.Cells(emptyRow, 3).Value = Program_Text.Value
.Cells(emptyRow, 4).Value = email_Text.Value
.Cells(emptyRow, 5).Value = OPN_Text.Value
.Cells(emptyRow, 6).Value = CPN_Text.Value
End With
End If
End If
Next CB
With ActiveWorkbook.Sheets("Master")
'Determine Empty Row
emptyRow = .Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1
'Transfer into to cells
.Cells(emptyRow, 1).Value = NOD_Text.Value
.Cells(emptyRow, 2).Value = TOD_Text.Value
.Cells(emptyRow, 3).Value = Program_Text.Value
.Cells(emptyRow, 4).Value = email_Text.Value
.Cells(emptyRow, 5).Value = OPN_Text.Value
.Cells(emptyRow, 6).Value = CPN_Text.Value
End With
End Sub