VBA脚本来parsing来自用户的多行input

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

  1. 用户点击一个button来添加一个新的客户端到列表中。
  2. popup窗口指示用户复制另一程序中的链接并将其粘贴到提供的文本字段中。
  3. 客户名称被添加到列表的底部,并且名称是到客户的在线configuration文件的超链接。

需要的信息

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

FirstName LastName <link_to_client_in_program>

因此,链接打印出客户的名字,然后打印出来,然后在下一行打印出一个超链接,链接到胡萝卜括号里的客户端在线configuration文件。

我有工作代码直到用户被提示添加链接的位置,尽pipe用户可以粘贴链接的文本字段不会显示多行,所以它只显示客户端的姓和名。

我需要帮助

  • 在用户将其粘贴到input框后显示客户的名称和链接。
  • 当用户点击“OK”时,脚本应该parsinginput的文本,把名字和姓氏作为一个variables来捕获,并且把在线configuration文件的链接作为一个单独的variables。
  • 然后,我想查看表格中的表格,find最后一个添加的客户端后面的行,并在该单元格中添加客户端名称,并将该名称作为到在线configuration文件的超链接。

我当前的代码

 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 

错误

当我运行脚本并单击button时,popup窗口会出现,并将链接粘贴到提供的文本框中。 当我点击“确定”,我得到一个错误,说:“运行时错误'1004':无法获取WorksheetFunction类的查找属性”。

如何

  • 如何通过表格search并获取没有客户端数据的列“B”中的下一个单元格?
  • 我该如何解决这个分析问题?
  • 如何将数据粘贴到正确的单元格中并使其成为客户端URL的超链接?

您正在寻找像这样做一个有效的Find – 这是不一样的工作表函数Find

这看起来在A列(自下而上),对于单元格B7的最后一场比赛。

如果find一个匹配,它将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 

在search文本中找不到目标时, Application.WorksheetFunction.Find将返回1004错误。 看看你的input框正在接收到clientInfo 。 我敢打赌,当链接被粘贴时,不包括“<”。

至于你的其他问题:

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

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

并使用macroslogging器生成: Sheets("Sheet1").Hyperlinks.Add Anchor:=rClientTarget, Address:= "http://www.stackoverflow.com", TextToDisplay:="asdf"