|
▼Kein さん:
おそくなりましたがありがとうございました。
サイトでコピーしたものをA1、B1、C1...と行に貼り付けるんですよね?
それで、↓のコードで試したらいいんですよね?
そうしてみると、↓のコードが列に入力されるだけになってしまいます。
並べ替えのボタンを作って実行しているんですが、何がおかしいのでしょうか?
Private Sub 並び替え_Click()
Dim V As Variant
Dim Flg As Boolean
Dim Dobj As DataObject
Dim St As String
Dim Ary() As String, i As Long, j As Long
For Each V In Application.ClipboardFormats
If V = xlClipBoradFormatText Then
Flg = True: Exit For
End If
Next
If Flg = False Then
MsgBox "テキストがコピーされていません", 48
Exit Sub
End If
Set Dobj = New DataObject
Dobj.GetFromClipboard
St = Dobj.GetText(1): Set Dobj = Nothing
For i = 1 To Len(St) Step 5
ReDim Preserve Ary(j)
Ary(j) = "'" & Mid$(St, i, 5)
j = j + 1
Next i
Range("A1").Resize(UBound(Ary) + 1).Value = _
WorksheetFunction.Transpose(Ary)
Erase Ary
End Sub
>サイトでコピーしてから、↓こんなコードで試してみて下さい。
>
>Sub Split_MyData()
> Dim V As Variant
> Dim Flg As Boolean
> Dim Dobj As DataObject
> Dim St As String
> Dim Ary() As String, i As Long, j As Long
>
> For Each V In Application.ClipboardFormats
> If V = xlClipBoradFormatText Then
> Flg = True: Exit For
> End If
> Next
> If Flg = False Then
> MsgBox "テキストがコピーされていません", 48
> Exit Sub
> End If
> Set Dobj = New DataObject
> Dobj.GetFromClipboard
> St = Dobj.GetText(1): Set Dobj = Nothing
> For i = 1 To Len(St) Step 5
> ReDim Preserve Ary(j)
> Ary(j) = "'" & Mid$(St, i, 5)
> j = j + 1
> Next i
> Range("A1").Resize(UBound(Ary) + 1).Value = _
> WorksheetFunction.Transpose(Ary)
> Erase Ary
>End Sub
>
>いちおう分割入力している数値は、文字列の扱いとしていますが
>数値に直しても大丈夫なら
>>Ary(j) = "'" & Mid$(St, i, 5)
>↓
>
>Ary(j) = Mid$(St, i, 5)
>
>に、変更して下さい。
|
|