VBA使用单击的按钮名称
在我的工作簿中,我有两张工作表(“概述”和“作业数据”)。在第一页上,我有五个不同名称的ActiveX按钮(“WKA”/“WKS”/“GM”/“IBN”/“PM”) 每个按钮打开用户表单“添加分配”,该表单还有两个按钮(“保存”和“取消”)。UF的数据应保存在“分配数据”表中 现在我想,如果我点击,例如,按钮WKA,数据应该保存在范围A:C;对于范围内的按钮,例如,第1行的标题也应使用按钮名称 不幸的是,我不知道该怎么做 按钮:VBA使用单击的按钮名称,vba,excel,Vba,Excel,在我的工作簿中,我有两张工作表(“概述”和“作业数据”)。在第一页上,我有五个不同名称的ActiveX按钮(“WKA”/“WKS”/“GM”/“IBN”/“PM”) 每个按钮打开用户表单“添加分配”,该表单还有两个按钮(“保存”和“取消”)。UF的数据应保存在“分配数据”表中 现在我想,如果我点击,例如,按钮WKA,数据应该保存在范围A:C;对于范围内的按钮,例如,第1行的标题也应使用按钮名称 不幸的是,我不知道该怎么做 按钮: Private Sub WKA_Click() Add_A
Private Sub WKA_Click()
Add_Assignment.Show
End Sub
Private Sub WKS_Click()
Add_Assignment.Show
End Sub
Private Sub GM_Click()
Add_Assignment.Show
End Sub
Private Sub IBN_Click()
Add_Assignment.Show
End Sub
Private Sub PM_Click()
Add_Assignment.Show
End Sub
Private Sub Save_Click()
Dim ws As Worksheet
Dim Col1 As Integer, Col2 As Integer, Col3 As Integer
Set ws = Worksheets("Assignment_Data")
If "ButtonName" = "WKA" Then
Col1 = "A"
Col2 = "B"
Col3 = "C"
ElseIf "ButtonName" = WKS Then
Col1 = "E"
Col2 = "F"
Col3 = "G"
ElseIf ' goes on till PM
End If
ws.Range(Col1 & "2").Value = Add_Assignment.Controls("TextBox1")
ws.Range(Col2 & "2").Value = Add_Assignment.Controls("TextBox2")
ws.Range(Col3 & "2").Value = Add_Assignment.Controls("TextBox3")
ws.Range(Col1 & "3").Value = Add_Assignment.Controls("TextBox4")
ws.Range(Col2 & "3").Value = Add_Assignment.Controls("TextBox5")
' and so on
Add_Assignment.Hide
End Sub
Private Sub Cancel_Click()
Add_Assignment.Hide
End Sub
Private Sub Save_Click()
Dim ws As Worksheet
Dim Col1 As Integer, Col2 As Integer, Col3 As Integer
Dim name As String
name = ActiveSheet.Shapes(Application.Caller).name ' in this line i get the error
Set ws = Worksheets("Assignment_Data")
If name = "WKA" Then
Col1 = "A"
Col2 = "B"
Col3 = "C"
' ...
End If
' Do something
End Sub
用户表单:
Private Sub WKA_Click()
Add_Assignment.Show
End Sub
Private Sub WKS_Click()
Add_Assignment.Show
End Sub
Private Sub GM_Click()
Add_Assignment.Show
End Sub
Private Sub IBN_Click()
Add_Assignment.Show
End Sub
Private Sub PM_Click()
Add_Assignment.Show
End Sub
Private Sub Save_Click()
Dim ws As Worksheet
Dim Col1 As Integer, Col2 As Integer, Col3 As Integer
Set ws = Worksheets("Assignment_Data")
If "ButtonName" = "WKA" Then
Col1 = "A"
Col2 = "B"
Col3 = "C"
ElseIf "ButtonName" = WKS Then
Col1 = "E"
Col2 = "F"
Col3 = "G"
ElseIf ' goes on till PM
End If
ws.Range(Col1 & "2").Value = Add_Assignment.Controls("TextBox1")
ws.Range(Col2 & "2").Value = Add_Assignment.Controls("TextBox2")
ws.Range(Col3 & "2").Value = Add_Assignment.Controls("TextBox3")
ws.Range(Col1 & "3").Value = Add_Assignment.Controls("TextBox4")
ws.Range(Col2 & "3").Value = Add_Assignment.Controls("TextBox5")
' and so on
Add_Assignment.Hide
End Sub
Private Sub Cancel_Click()
Add_Assignment.Hide
End Sub
Private Sub Save_Click()
Dim ws As Worksheet
Dim Col1 As Integer, Col2 As Integer, Col3 As Integer
Dim name As String
name = ActiveSheet.Shapes(Application.Caller).name ' in this line i get the error
Set ws = Worksheets("Assignment_Data")
If name = "WKA" Then
Col1 = "A"
Col2 = "B"
Col3 = "C"
' ...
End If
' Do something
End Sub
编辑:
Private Sub WKA_Click()
Add_Assignment.Show
End Sub
Private Sub WKS_Click()
Add_Assignment.Show
End Sub
Private Sub GM_Click()
Add_Assignment.Show
End Sub
Private Sub IBN_Click()
Add_Assignment.Show
End Sub
Private Sub PM_Click()
Add_Assignment.Show
End Sub
Private Sub Save_Click()
Dim ws As Worksheet
Dim Col1 As Integer, Col2 As Integer, Col3 As Integer
Set ws = Worksheets("Assignment_Data")
If "ButtonName" = "WKA" Then
Col1 = "A"
Col2 = "B"
Col3 = "C"
ElseIf "ButtonName" = WKS Then
Col1 = "E"
Col2 = "F"
Col3 = "G"
ElseIf ' goes on till PM
End If
ws.Range(Col1 & "2").Value = Add_Assignment.Controls("TextBox1")
ws.Range(Col2 & "2").Value = Add_Assignment.Controls("TextBox2")
ws.Range(Col3 & "2").Value = Add_Assignment.Controls("TextBox3")
ws.Range(Col1 & "3").Value = Add_Assignment.Controls("TextBox4")
ws.Range(Col2 & "3").Value = Add_Assignment.Controls("TextBox5")
' and so on
Add_Assignment.Hide
End Sub
Private Sub Cancel_Click()
Add_Assignment.Hide
End Sub
Private Sub Save_Click()
Dim ws As Worksheet
Dim Col1 As Integer, Col2 As Integer, Col3 As Integer
Dim name As String
name = ActiveSheet.Shapes(Application.Caller).name ' in this line i get the error
Set ws = Worksheets("Assignment_Data")
If name = "WKA" Then
Col1 = "A"
Col2 = "B"
Col3 = "C"
' ...
End If
' Do something
End Sub
应用程序代码。调用方:
Private Sub WKA_Click()
Add_Assignment.Show
End Sub
Private Sub WKS_Click()
Add_Assignment.Show
End Sub
Private Sub GM_Click()
Add_Assignment.Show
End Sub
Private Sub IBN_Click()
Add_Assignment.Show
End Sub
Private Sub PM_Click()
Add_Assignment.Show
End Sub
Private Sub Save_Click()
Dim ws As Worksheet
Dim Col1 As Integer, Col2 As Integer, Col3 As Integer
Set ws = Worksheets("Assignment_Data")
If "ButtonName" = "WKA" Then
Col1 = "A"
Col2 = "B"
Col3 = "C"
ElseIf "ButtonName" = WKS Then
Col1 = "E"
Col2 = "F"
Col3 = "G"
ElseIf ' goes on till PM
End If
ws.Range(Col1 & "2").Value = Add_Assignment.Controls("TextBox1")
ws.Range(Col2 & "2").Value = Add_Assignment.Controls("TextBox2")
ws.Range(Col3 & "2").Value = Add_Assignment.Controls("TextBox3")
ws.Range(Col1 & "3").Value = Add_Assignment.Controls("TextBox4")
ws.Range(Col2 & "3").Value = Add_Assignment.Controls("TextBox5")
' and so on
Add_Assignment.Hide
End Sub
Private Sub Cancel_Click()
Add_Assignment.Hide
End Sub
Private Sub Save_Click()
Dim ws As Worksheet
Dim Col1 As Integer, Col2 As Integer, Col3 As Integer
Dim name As String
name = ActiveSheet.Shapes(Application.Caller).name ' in this line i get the error
Set ws = Worksheets("Assignment_Data")
If name = "WKA" Then
Col1 = "A"
Col2 = "B"
Col3 = "C"
' ...
End If
' Do something
End Sub
有必要使用表格吗?听起来这可以通过一个简单的
MsgBox
实现:
Sub confirmSave(btn_name As String)
Dim res As VbMsgBoxResult
res = MsgBox("Save?", buttons:=vbOKCancel)
If res = VbOK Then ...
End Sub
并将要复制的值放在单独的表中。因此,与其这样做
ws.Range(Col1 & "2").Value = Add_Assignment.Controls("TextBox1")
ws.Range(Col2 & "2").Value = Add_Assignment.Controls("TextBox2")
...
你只需要
ws.Range(StartCol & "2:" & EndCol & "3").Value = TemplateSheet.Range("A2:C3").Value ' or wherever the range is
听起来您可能可以使用这个应用程序。Caller@QHarr我的想法是,使用表单按钮更容易,因为您可以将它们全部绑定到普通模块中的同一个子模块。然后使用Application.Caller获取单击按钮的名称,并将其传递给在Userform中创建的属性。您可以向表单中添加标签,例如调用AssignmentLabel,然后在调用表单时替换标签的标题。WKA示例:
Add_Assignment.AssignmentLabel.Caption=“WKA”
就在Add_Assignment.Show
之前。打开表单后,可以执行if语句,引用AssignmentLabel.Caption值。@5202456这很好用。。非常感谢你。这是一个如此简单的解决方案。这么好。非常感谢。