断线上的新数组维度

时间:2015-07-10 08:00:17

标签: arrays vba clipboard

我将剪贴板中的数据放入我的数组并用新行拆分。但我还需要通过标签分割的第二个维度,但不知道如何?剪贴板中的数据应该具有固定的大小,因此每行的部件数量相同。

到目前为止我有什么

Private Sub btnPaste_Click()

    Dim Clipboard As MSForms.DataObject
    Dim arrClip As Variant
    Dim i As Long
    Dim str As String
    Dim msg As String


    On Error GoTo ERRORHAND

    Set Clipboard = New MSForms.DataObject
    Clipboard.GetFromClipboard

    str = Clipboard.GetText(1)
    arrClip = Split(str, vbLf)

    For i = LBound(arrClip) To UBound(arrClip)
        msg = msg & arrClip(i) & vbLf
    Next

    MsgBox (msg)

    Exit Sub

ERRORHAND:
    If Err <> 0 Then Debug.Print Err.Description
End Sub

这为我提供了一个数组,其中包含来自剪贴板的每个新行的新元素,但我不知道如何在每个标签上添加元素到第二个维度&#39;在剪贴板中找到了?

剪贴板中的数据示例以及我希望它如何填充数组

剪贴板中的数据

Data00        Data10        Data20        Data30
Data01        Data11        Data21        Data31
Data02        Data12        Data22        Data32
Data03        Data13        Data23        Data33
etc...

应该是对应的数组元素

Array(0,0)    Array(1,0)    Array(2,0)    Array(3,0)
Array(0,1)    Array(1,1)    Array(2,1)    Array(3,1)
Array(0,2)    Array(1,2)    Array(2,2)    Array(3,2)
Array(0,3)    Array(1,3)    Array(2,3)    Array(3,3)
etc...

1 个答案:

答案 0 :(得分:1)

这是你的代码添加一些(希望它有帮助)

Sub btnPaste_Click()

    Dim Clipboard As MSForms.DataObject
    Dim arrClip As Variant
    Dim i As Long
    Dim str As String
    Dim msg As String

    Dim arrClip2 As Variant
    Dim arrClipBid() As Variant
    Dim ii As Integer

    'On Error GoTo ERRORHAND

    Set Clipboard = New MSForms.DataObject
    Clipboard.GetFromClipboard

    str = Clipboard.GetText(1)
    arrClip = Split(str, vbLf)

    ReDim arrClipBid(LBound(arrClip) To UBound(arrClip), 0 To 0)

    For i = LBound(arrClip) To UBound(arrClip)
        arrClip2 = Split(arrClip(i), Chr(9))
        If MaxLen < UBound(arrClip2) Then
            MaxLen = UBound(arrClip2)
            ReDim Preserve arrClipBid(LBound(arrClip) To UBound(arrClip), 0 To MaxLen)
        End If
        For ii = LBound(arrClip2) To UBound(arrClip2)
            arrClipBid(i, ii) = arrClip2(ii)
            msg = msg & "(" & i & ", " & ii & ")" & arrClip2(ii)
        Next ii
        msg = msg & vbLf
    Next

    MsgBox (msg)

    Exit Sub

ERRORHAND:
    If Err <> 0 Then Debug.Print Err.Description
End Sub