Excel VBA使用包含预构建句子的按钮来构建有关与客户讨论的消息
这里完全没有问题。我在一家公司工作,整天都在接电话,完成电话后,我需要记录我的讨论。我发现自己一遍又一遍地输入同样的内容,我正试图在Excel中使用VBA创建一个解决方案。我不能使用外部程序,所以我只能使用VBA。下面是我的代码。其目标是允许用户单击各种按钮,以生成涵盖通话主题的消息。然后,我将添加复制消息的功能,然后将其粘贴到我们用于记录注释的程序中 截至目前:Excel VBA使用包含预构建句子的按钮来构建有关与客户讨论的消息,excel,vba,Excel,Vba,这里完全没有问题。我在一家公司工作,整天都在接电话,完成电话后,我需要记录我的讨论。我发现自己一遍又一遍地输入同样的内容,我正试图在Excel中使用VBA创建一个解决方案。我不能使用外部程序,所以我只能使用VBA。下面是我的代码。其目标是允许用户单击各种按钮,以生成涵盖通话主题的消息。然后,我将添加复制消息的功能,然后将其粘贴到我们用于记录注释的程序中 截至目前: 我能够从excel表格中的两列中提取,这两列为每一行(第1列)创建按钮,当我将鼠标悬停在按钮上时,我可以看到所需的文本(第2列),
- 我能够从excel表格中的两列中提取,这两列为每一行(第1列)创建按钮,当我将鼠标悬停在按钮上时,我可以看到所需的文本(第2列),但是,单击按钮不会在文本框中显示文本
Option Explicit
Public WithEvents Btn As MSForms.CommandButton
Private Sub Btn_Click()
UserForm1.TextBox1.Text = UserForm1.TextBox1.Text & Btn.Tag & " "
End Sub
用户表单1
Private Sub UserForm_Click()
Option Explicit
Private Btns As Collection
Private Sub UserForm_Initialize()
Dim DataList As ListObject
Set DataList = ThisWorkbook.Worksheets("Sheet1").ListObjects("Table1")
Dim btnTop As Long, btnLeft As Long
Dim btnHeight As Long, btnWidth As Long
Dim btnSpace As Long
Dim ColCount As Long, CurrentCol As Long
btnTop = 6: btnLeft = 6
btnWidth = 72: btnHeight = 24
btnSpace = 6
ColCount = 4: CurrentCol = 1
Set Btns = New Collection
Dim cmdbtn As CommandButton
Dim btnEvent As Class1
Dim itm As Range
For Each itm In DataList.ListColumns(1).DataBodyRange
Set cmdbtn = Me.Controls("Frame1").Controls.Add("Forms.CommandButton.1")
With cmdbtn
.Top = btnTop
.Left = btnLeft
.Width = btnWidth
.Height = btnHeight
.Caption = itm
.Tag = itm.Offset(, 1)
.ControlTipText = .Tag
End With
Set btnEvnt = New Class1
Set btnEvnt.Btn = cmdbtn
Btns.Add btnEvnt
btnLeft = (btnSpace + btnWidth) * CurrentCol + btnSpace
If CurrentCol Mod ColCount = 0 Then
CurrentCol = 1
btnTop = btnSpace + btnTop + btnHeight
btnLeft = btnSpace
Else
CurrentCol = CurrentCol + 1
End If
Next itm
Me.Frame1.ScrollHeight = btnTop + btnHeight + btnSpace
End Sub
不知道你为什么不在上发布我的回复的后续信息。
Userform\u Click
行应该会抛出一个编译错误。除了@DarrenBartrup-Cook提到的之外,您的代码中还有一些问题会抛出错误(您声明Dim btnEvent为Class1
,但随后您将其初始化为:Set btnEvent=New Class1
。它们不匹配)。你试过运行这个代码吗?对不起@Darren Bartrup Cook!你帮了我大忙,我个人也在苦苦挣扎,当有人已经超越了我的期望,要求额外的帮助。此外,我无法在工作电脑上访问Reddit,也无法发布您为我键入的代码。你是正确的,它抛出了一个错误,但鉴于我的知识水平极低,它使我更容易显示我如何输入您的代码来识别任何问题!我想你在下一步的某个地方有错误。尝试在表单初始化开始时添加,错误转到0
,然后查看您的操作get@Zeewowski很抱歉这并不意味着我的评论听起来很刺耳。我从不介意回答后续问题——这并不意味着我会一直这样做,这取决于我在哪里,以及我是否记得什么时候到了可以检查答案的地方。:)扎克所做的更正应该会使表格起作用。您是否打算在表单单击事件中使用其他代码?如果不是的话,你可以把它完全删掉。不知道你为什么不把我的回复贴在上面。Userform\u Click
行应该会抛出一个编译错误。除了@DarrenBartrup-Cook提到的之外,您的代码中还有一些问题会抛出错误(您声明Dim btnEvent为Class1
,但随后您将其初始化为:Set btnEvent=New Class1
。它们不匹配)。你试过运行这个代码吗?对不起@Darren Bartrup Cook!你帮了我大忙,我个人也在苦苦挣扎,当有人已经超越了我的期望,要求额外的帮助。此外,我无法在工作电脑上访问Reddit,也无法发布您为我键入的代码。你是正确的,它抛出了一个错误,但鉴于我的知识水平极低,它使我更容易显示我如何输入您的代码来识别任何问题!我想你在下一步的某个地方有错误。尝试在表单初始化开始时添加,错误转到0
,然后查看您的操作get@Zeewowski很抱歉这并不意味着我的评论听起来很刺耳。我从不介意回答后续问题——这并不意味着我会一直这样做,这取决于我在哪里,以及我是否记得什么时候到了可以检查答案的地方。:)扎克所做的更正应该会使表格起作用。您是否打算在表单单击事件中使用其他代码?如果没有,你可以完全忽略它。