首先,我对VBA几乎一无所知..可能根本就没有。但是我被要求创建一个VBA程序,用于将剪贴板中的文本粘贴到不同的单元格中。我的文字格式如下:
seminar: name of Seminar (in cell(1,1))
first name: participant's first name (in cell(1,2))
last name: participant's last name (in cell(1,3)) etc..
到目前为止,我能够从剪贴板中读取文本。然后我找到了“:”的位置,以便只粘贴它在单元格中的内容。 在这一点上,我想找到RETURN字符的位置,以便知道第一行的结束位置(例如“研讨会的名称”),我在网上找到了这行代码:
end_str = InStr(str, vbCrLf) - 1
并使用Right(字符串,长度)函数来获取相对文本。 这不起作用。我认为因为字符串变量中没有返回字符来保存数据?我不知道。 我的问题是:是否有可能以某种方式检查RETURN字符或是否有更好的方法来创建此程序? 提前谢谢。
答案 0 :(得分:1)
一种简单的方法是使用split函数分别获取每一行:
假设您有一个名为ClipBoard_GetData
的函数从ClipBoard返回文本,您可以使用以下内容:
Dim lines() As String
lines = Split(ClipBoard_GetData, vbNewLine)
For Each Line In lines
' Parse each line to get whatever parts you want
Next
这应该可以正常工作..如果你没有 - 已经有一个功能可以获得剪贴板中的内容,你可以参考this link
希望有所帮助:)
答案 1 :(得分:0)
很可能你之后的Ascii代码是10(即换行符)。所以你可以像这样找到换行符的位置:
i = Instr(str, Chr(10))
但是,您是否意识到根本不需要解析该剪贴板文本。您可以将数组直接写入工作表单元格。所以你需要做的就是使用Split
功能。以下程序将完成您所需的一切:
Public Sub PasteText(str As String)
Dim arr() As String
Dim cols As Integer
arr = Split(str, Chr(10))
cols = UBound(arr) + 1
Sheet1.Range("A1").Resize(, cols).Value = arr
End Sub