用于解析用户

时间:2015-12-15 21:05:09

标签: excel excel-vba vba

我正在为Excel文档编写VBA脚本。这就是我想要发生的事情。

  1. 用户单击按钮以将新客户端添加到列表中。
  2. 弹出窗口指示用户复制另一个程序中的链接并将其粘贴到提供的文本字段中。
  3. 客户名称将添加到列表底部,名称是指向客户在线个人资料的超链接。
  4. 需要的信息

    从其他程序复制的链接会自动格式化为:

    FirstName LastName <link_to_client_in_program>

    因此,链接打印出客户端的名字,然后是最后一个,然后在下一行打印出一个超链接,指向嵌套在胡萝卜括号内的客户端在线配置文件。

    到目前为止,我有工作代码提示用户添加链接,但用户可以粘贴链接的文本字段不显示多行,因此它只显示客户端名字和姓氏。

    我需要帮助

    • 在用户将其粘贴到客户端后显示客户端的名称和链接 输入框。
    • 当用户点击&#34;确定&#34;时,脚本应解析输入的文本以将名字和姓氏捕获为变量,并将链接指向在线个人资料作为单独的变量。
    • 然后,我想查看工作表上的表格,找到最后添加的客户端后面的行,并在该单元格中添加客户端名称,并使该名称成为在线配置文件的超链接。

    我当前的代码

    Sub addClient()
       Dim clientInfo As String
       Dim clientName As String
       Dim clientURL As String
    
       clientInfo= InputBox("Click on the 'Copy a Link' in CRM for the Client and paste in the field below.", "Client Information")
       clientName  = Left(clientInfo, Application.WorksheetFunction.Find("<", clientInfo) - 1)
       clientURL  = Right(clientInfo, Application.WorksheetFunction.Find("<", clientInfo) - 1)
       Range("B7").Value = clientName 
    End Sub
    

    错误

    当我运行脚本并单击按钮弹出窗口时,我将链接粘贴到提供的文本框中。当我点击&#34; OK&#34;我收到一条错误消息,&#34;运行时错误&#39; 1004&#39;:无法获取WorksheetFunction类的Find属性&#34;。

    如何

    • 如何在表格中搜索并获取列中的下一个单元格&#39; B&#39;没有客户的数据?
    • 如何修复此解析问题?
    • 如何将数据粘贴到正确的单元格中并使其成为客户网址的超链接?

2 个答案:

答案 0 :(得分:0)

你正在寻找这样的东西来做一个有效的Find - 这与工作表函数Find

不同

在A列(自下而上)中查找单元格B7上的最后一个匹配。

如果找到匹配项,则会将B7的内容添加到A中的该单元格中(因此您需要根据自己的需要稍微调整一下)。

Sub UpdateMe()
Dim rng1 As Range
If Len([b7].Value) > 0 Then
Set rng1 = Columns("A:A").Find([b7].Value, [a1], xlFormulas, xlWhole, , xlPrevious)
    If Not rng1 Is Nothing Then
        rng1.Value = rng1.Value & " " & [b7].Value
    Else
        MsgBox "Client not find", vbCritical
    End If
Else
    MsgBox "No value to find", vbCritical
End If
End Sub

答案 1 :(得分:-1)

在搜索文本中找不到目标时,

Application.WorksheetFunction.Find将返回1004错误。看一下您的输入框收到的内容clientInfo。我敢打赌,你不包括&#34;&lt;&#34;粘贴链接时。

至于你的其他问题:

我在B列中找到第一个可用单元格的方式是:

Do Until Sheets("Sheet1").Cells(i,2).Value = ""
    i = i+1
Loop
Set rClientTarget = Range(Cells(i,2).Address)

使用宏录制器制作: Sheets("Sheet1").Hyperlinks.Add Anchor:=rClientTarget, Address:= "http://www.stackoverflow.com", TextToDisplay:="asdf"