Как получить буфер обмена в 2D массив (excel vba)
Я очень новичок в Excel VBA и хочу получить текст из буфера обмена в 2D массив, с первым разделителем vbNewLine и вторым разделителем пробел. Как создать двумерный массив неизвестного размера? Могу ли я разделить массив, как ниже, где я потерпел неудачу?
Sub CommandButton1_Click()
Dim DataObj As MsForms.DataObject
Set DataObj = New MsForms.DataObject
Dim strArray() As String
On Error GoTo ERRROR
'~~> Get data from the clipboard.
DataObj.GetFromClipboard
'~~> Get clipboard contents
myString = DataObj.GetText(1)
'~~> Split into string, delimiter vbNewLine
strArray = Split(myString, vbNewLine)
Вот здесь я потерплю неудачу
'~~> Split each strArray and store in strArray2, delimiter " ".
Dim strArray2() As String
For ii = LBound(strArray2) To UBound(strArray2)
strArray2(ii) = Split(strArray(ii))
Next ii
Exit Sub
ERRROR:
If Err <> 0 Then
'Handel error
End If
End Sub
1 ответ:
Вы делаете это неправильно.
Это то, что вы пытаетесь сделать? (непроверенные )Sub CommandButton1_Click() Dim DataObj As MsForms.DataObject Dim strArray, strArray2 Dim i As Long, j As Long Dim myString As String On Error GoTo ERRROR Set DataObj = New MsForms.DataObject '~~> Get data from the clipboard. DataObj.GetFromClipboard '~~> Get clipboard contents myString = DataObj.GetText(1) '~~> Split myString, delimiter vbNewLine strArray = Split(myString, vbNewLine) '~~> Split each strArray and store in strArray2, delimiter " ". For i = LBound(strArray) To UBound(strArray) strArray2 = Split(strArray(i)) For j = LBound(strArray2) To UBound(strArray2) Debug.Print strArray2(j) Next j Next i Exit Sub ERRROR: If Err <> 0 Then Debug.Print Err.Description End Sub