電子書籍の厳選無料作品が豊富!

VBA 初心者です。色々と調べながら仕事を進めておりますがわからないので
ここで質問させてください。

ブック1からD列にあるデータをコピーし、ブック2のC列にて最終行割出し後、
ブック1にてコピーした内容を行列を置き換えて貼付をしたいのですが
最終行セレクトのところでエラーが出てしまいます。

下記にVBA記載しますのでご教授頂けたらと思います。

----------
Sub 新規登録() 'クライアント情報一覧作成マクロ

'使用シートの設定
Dim wb1, wb2 As Workbook
Dim sh1, sh2 As Worksheet

Set wb1 = Workbooks.Open(ThisWorkbook.Path & "\取引先情報(新規).xlsx")
Set wb2 = Workbooks("取引先情報一覧.xlsm")
Set sh1 = wb1.Worksheets("新規登録シート")
Set sh2 = wb2.Worksheets("クライアント一覧")

With sh2

'D6~26の値を、コピー
sh1.Range("D6:D26").Copy

'データを追加する行を取得
n = sh2.Cells(Rows.Count, "C").End(xlUp).Offset(1).Select

'行列を変換して、値のみ貼り付け
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True

End With

'シートを閉じる
wb1.Close savechanges:=False

End Sub

----------------------------------------
尚、C7セルが一番最初の貼付場所としたいです。


宜しくお願い致します。

A 回答 (2件)

こんばんは、


#1の よろずやkinchanさんの回答はその通りとして、おそらく同じ場所でエラーになってしまうのではないでしょうか?
示されているプロシージャがすべてなら、きっと。

もし、エラーが出たなら、それは、ブックシートの所在が不明になっている為です。 Selectを使わない方法なら、回避できますが。
Selectする場合、対象(シート)をActiveにしましょう。 sh2.Activate 

ご質問に対しての回答ではありませんが参考まで。
Selectを使わない方法なら、こんな書き方もあります。


Set sh2 = wb2.Worksheets("クライアント一覧")
Dim n As Long ’変数宣言もっと上でも良い

n = sh2.Cells(Rows.Count, "C").End(xlUp).Row ’sh2のC列最終行を取得、変数へ

sh1.Range("D6:D26").Copy
sh2.Range("C" & n + 1).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Application.CutCopyMode = False ’sh1はすぐ閉じるのでなくても良いが、
' シートを閉じる
wb1.Close savechanges:=False
    • good
    • 0
この回答へのお礼

ありがとうございます!確かにエラー出てしまいました。まだ私の中でSelectの使い方が上手く理解できていないようです、、。
Selectにはこだわりないので教えて頂いた書き方でもう一度試してみたいと思います!

またご報告させて頂きます!!

お礼日時:2020/02/09 06:11

n = sh2.Cells(Rows.Count, "C").End(xlUp).Offset(1).Select



sh2.Cells(Rows.Count, "C").End(xlUp).Offset(1).Select

かな。
    • good
    • 0
この回答へのお礼

ありがとう

ありがとうございます!!月曜日になってしまいますが試して見たいと思います!!

n=を消して出来ればベストアンサーさせて頂ます★

お礼日時:2020/02/08 19:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報