Excel VBA使用包含预构建句子的按钮来构建有关与客户讨论的消息

Excel VBA使用包含预构建句子的按钮来构建有关与客户讨论的消息,excel,vba,Excel,Vba,这里完全没有问题。我在一家公司工作,整天都在接电话,完成电话后,我需要记录我的讨论。我发现自己一遍又一遍地输入同样的内容,我正试图在Excel中使用VBA创建一个解决方案。我不能使用外部程序,所以我只能使用VBA。下面是我的代码。其目标是允许用户单击各种按钮,以生成涵盖通话主题的消息。然后,我将添加复制消息的功能,然后将其粘贴到我们用于记录注释的程序中 截至目前: 我能够从excel表格中的两列中提取,这两列为每一行(第1列)创建按钮,当我将鼠标悬停在按钮上时,我可以看到所需的文本(第2列),

这里完全没有问题。我在一家公司工作,整天都在接电话,完成电话后,我需要记录我的讨论。我发现自己一遍又一遍地输入同样的内容,我正试图在Excel中使用VBA创建一个解决方案。我不能使用外部程序,所以我只能使用VBA。下面是我的代码。其目标是允许用户单击各种按钮,以生成涵盖通话主题的消息。然后,我将添加复制消息的功能,然后将其粘贴到我们用于记录注释的程序中

截至目前:

  • 我能够从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很抱歉这并不意味着我的评论听起来很刺耳。我从不介意回答后续问题——这并不意味着我会一直这样做,这取决于我在哪里,以及我是否记得什么时候到了可以检查答案的地方。:)扎克所做的更正应该会使表格起作用。您是否打算在表单单击事件中使用其他代码?如果没有,你可以完全忽略它。