エクセルVBAでTransposeの不思議
MS Officeのエクセル2000です。
下記Sub test01はRange("A1:I1")に文字列を入力し、一旦配列に取り込んでからワークシートに貼り付けるものです。
試験用のコードですので意味はありません。
このコードで255文字まではまったく問題はありません。
ところが、256文字以上の場合、横に貼り付けは問題ないのですが、 Transposeで縦に変換すると型が一致しません。(Error 13)となります。
どうしてでしょうか?
試行錯誤の結果、Sub test02のように一旦横に貼ったデータをコピーしてTransposeして貼り付けるのは大丈夫のようですので不思議でしょがありません。
またこの方法は列数256より要素が多い配列には使えないので解決策にはなりません。
ご教示くださいませ。
Sub test01()
Dim myAr As Variant
Dim i As Integer, n As Integer
n = 256 '文字数
With ActiveSheet
.UsedRange.ClearContents
For i = 1 To 9
.Cells(1, i).Value = Application.Rept(Left(.Cells(1, i).Address(0, 0), 1), n)
Next
myAr = .Range("A1:I1").Value
.Range("A3").Resize(, UBound(myAr, 2)).Value = myAr
.Range("A5").Resize(UBound(myAr, 2)).Value = Application.Transpose(myAr) '256文字の場合エラー
End With
End Sub
Sub test02()
Dim myAr As Variant
Dim i As Integer, n As Integer
n = 256 '文字数
With ActiveSheet
.UsedRange.ClearContents
For i = 1 To 9
.Cells(1, i).Value = Application.Rept(Left(.Cells(1, i).Address(0, 0), 1), n)
Next
myAr = .Range("A1:I1").Value
.Range("A3").Resize(, UBound(myAr, 2)).Value = myAr
.Range("A3").Resize(, UBound(myAr, 2)).Copy
.Range("A5").PasteSpecial Paste:=xlValues, Transpose:=True '256文字の場合もOK
Application.CutCopyMode = False
End With
End Sub
お礼
ありがとうございます。 文字化けだとは思いますが、今まで見た文字化け(変な漢字、半角カタカナや点)ではなかったので、不思議に思っています。