VBA检查剪贴板中的ENTER字符

时间:2016-03-22 10:26:38

标签: excel vba excel-vba

首先,我对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字符或是否有更好的方法来创建此程序? 提前谢谢。

2 个答案:

答案 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