ここから本文です

VBA についての質問です。

mar********さん

2018/9/622:44:28

VBA についての質問です。

sub hoge ()
Workbooks(“book1.xlsx”).Activate
Worksheet(“sheet1”).Activate
vA=range(cells(1,1),cells(5,5))

Workbooks(“book2.xlsx”).Activate
Worksheet(“sheet1”).Activate
vB=range(cells(1,1),cells(5,5))

End sub

このプログラムで配列vAのA列を配列vBのE列に貼り付ける。
同様にvAのB列をvBのD列に、vAのC列をvBのC列に、vAのD列をvBのB列に、vAのE列をvBのA列に貼り付けるというプログラムを教えて頂きたいです。

book1とbook2のシートは実行前から開いているものとしてください。
配列同士のコピーペーストが完了した後、

Workbooks(“book2.xlsx”).Activate
Worksheet(“sheet1”).Activate
range(cells(1,1),cells(5,5))=vB

で、一気に結果をbook2に貼り付けしたいです。

閲覧数:
57
回答数:
2

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

2018/9/713:38:05

説明の通り、配列経由で入れ替えするのであれば、↓が一例。

Sub sample()
Dim vA, vB, i As Long, ii As Long
With Workbooks("book1.xlsx").Worksheet("sheet1")
vA = .Range(.Cells(1, 1), .Cells(5, 5))
End With
ReDim vB(LBound(vA, 1) To UBound(vA, 1), _
LBound(vA, 2) To UBound(vA, 2))
For i = LBound(vA, 1) To UBound(vA, 1)
For ii = LBound(vA, 2) To UBound(vA, 2)
vB(i, 6 - ii) = vA(i, ii)
Next ii
Next i
With Workbooks("book2.xlsx").Worksheet("sheet1")
.Cells(1, 1).Resize(UBound(vB, 1), UBound(vB, 2)) = vB
End With
End Sub

  • tra********さん

    2018/9/713:49:45

    シート間で直接というのなら、

    Sub sample()
    Dim vA As Range, i As Long, xCol As Long
    With Workbooks("book1.xlsx").Worksheet("sheet1")
    Set vA = .Range(.Cells(1, 1), .Cells(5, 5))
    xCol = vA.Columns.Count
    End With
    With Workbooks("book2.xlsx").Worksheet("sheet1").Cells(1, 1)
    For i = xCol To 1 Step -1
    vA.Columns(i).Copy .Offset(i - xCol)
    Next i
    End With
    End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

tai********さん

2018/9/706:05:43

range(cells(1,1),cells(5,5))=vB

ここの所

range(cells(1,1),cells(5,5))=vA

の間違いですか?

いずれにしても列を入れ替えるなら単純に一気に、とはいかいないと思います。




Sub hoge()
Dim vA(1 To 5, 1 To 5), i As Long, j As Long

With Workbooks("book1.xlsx").Worksheets("Sheet1")
For i = 1 To 5
For j = 1 To 5
vA(j, 6 - i) = .Cells(j, i).Value
Next
Next
End With

With Workbooks("book2.xlsx").Worksheets("Sheet1")
.Cells(1, 1).Resize(5, 5) = vA
End With
End Sub

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる