質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

519閲覧

複数セルの値を転記したいが、セル一個分しか転記されない

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/01/19 03:54

編集2018/01/19 04:46

###前提・実現したいこと
画像のエクセルの内容を、別シートに転記してデータベースを作成しようとしています。

###発生している問題・エラーメッセージ
画像の黄色いセルの内容しか転記されず、解決できずにいます。

###該当のソースコード

Set pasteCell = pasteWs.Cells(pasteWs.Rows.Count, "D").End(xlUp).Offset(0, 0) Dim sagyokingakuCell As Excel.Range With copyWs Set sagyokingakuCell = _ .Range( _ .Range("B37"), _ .Range("B37").End(xlToRight).End(xlDown) _ ) End With 'copyWs 'sagyokingakuCell.Copy 'pasteCell.PasteSpecial Paste:=xlPasteValues, _ ' Operation:=xlNone, _ ' SkipBlanks:=False, _ ' Transpose:=False pasteCell.Value() = sagyokingakuCell.Value()

質問後、試したソースコード①

Set

1 pasteCell.Value() = sagyokingakuCell.Value()

質問後、試したソースコード②

Set sagyokingakuCell = _ .Range( _ .Range("B37:M37"), _ .Range("B37:M37").End(xlDown) _ ) End With 'copyWs pasteCell.Value() = sagyokingakuCell.Value()

質問後、試したコード③

Dim sagyokingakuCell As Excel.Range Set sagyokingakuCell = copyWs.Range(Cells(37, 2), Cells(37, "13")).Select.End(xlDown).Select pasteCell.Value() = sagyokingakuCell.Value()

やはり黄色いセルしか選択できていないようで、解決できずにいます。どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Range("B37").End(xlToRight).SelectでB37から最終行の右端までのセルが取れますか

投稿2018/01/19 04:17

King_of_Flies

総合スコア382

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/01/19 04:27

早速のご返信ありがとうございます! キーボードで検証してみたらよいのですね! たしかに、I37までしか選択できませんでした。。
King_of_Flies

2018/01/19 04:33

であれば、Range(Cells(37,2),Cells(37,"何列目のセルまでか入力して")).Selectで試してみてください。
King_of_Flies

2018/01/19 04:35

.Selectの記述は選択範囲の確認ができたら取ってしまって構いません。
King_of_Flies

2018/01/19 04:36

補足ですが 何列目のセルまでか入力して → M列まで取りたいのであれば13と入れてください。
退会済みユーザー

退会済みユーザー

2018/01/19 04:41

早速のご返信ありがとうございます! 下記に変更してみましたが、黄色くハイライトされてデバッグ画面になってしまいました。構文間違ってるでしょうか?? Dim sagyokingakuCell As Excel.Range Set sagyokingakuCell = copyWs.Range(Cells(37, 2), Cells(37, "13")).Select.End(xlDown).Select pasteCell.Value() = sagyokingakuCell.Value()
King_of_Flies

2018/01/19 04:46

Dim sagyoukingakuCell As Range Set sagyoukingakuCell = Range(Cells(37,2),Cells(37,13)) pasteCell.Value() = sagyoukingakuCell かな? メッセージはなんと出ていますか?
King_of_Flies

2018/01/19 04:48

Range(Cells(37,2),Cells(37,13)).End(xlDown)
退会済みユーザー

退会済みユーザー

2018/01/19 04:49

ありがとうございます! いただいたコードを試してみましたら、 sagyoukingakuCellがハイライトされて、「コンパイルエラー:変数が定義されていません」とメッセージでました。
退会済みユーザー

退会済みユーザー

2018/01/19 04:51

Set pasteCell = pasteWs.Cells(pasteWs.Rows.Count, "D").End(xlUp).Offset(0, 0) Dim sagyokingakuCell As Excel.Range Set sagyokingakuCell = copyWs.Range(Cells(37, 2), Cells(37, 13)).Select pasteCell.Value() = sagyoukingakuCell.Value() と変更してみても、同じメッセージが出ます。
King_of_Flies

2018/01/19 04:51

sagyoukingakuCellがDimで宣言した文字列と、Setで使用している文字列が等しいことを確認してください。 誤字かと思われます。
King_of_Flies

2018/01/19 04:52

sagyoukingakuCell → sagyokingakuCellですかねw
退会済みユーザー

退会済みユーザー

2018/01/19 05:44

早速のご検証ありがとうございます! タイポみつかりました! 直したところ、まだタイポがあるのかもしれないのですが、 実行したら下記が今度はハイライトされ、 「実行時エラー242:オブジェクトが必要です」 と出てしまいました。 Set sagyokingakuCell = copyWs.Range(Cells(37, 2), Cells(37, 13)).Select
King_of_Flies

2018/01/19 06:10

.Selectがいらないのと、copyWs.がいらないと思います。 sagyoukingakuCellはRange型なので、Range()で指定したもの以外不要です
King_of_Flies

2018/01/19 06:21

Dim S1 As Worksheet Dim S2 As Worksheet 'シート1をS1にセット。S1.Cells(1,2)でシート1のA2を参照できます。 sheet1.Activate Set S1 = ActiveSheet 'シート2をS2にセット。S2.Cells(1,2)でシート2のA2を参照できます。 sheet2.Activate Set S2 = ActiveSheet Dim sagyokingakuCell As Range 'シート1のB37~M37を選択し、その列の最終行までをsagyoukingakuCellに格納します。 Set sagyoukingakuCell = Range(S1.Cells(37,2),S1.Cells(37,13).End(xlDown)) 'シート2のA1にsagyoukingakuCellの値を貼り付けます。 S2.Cells(1,1).Value = sagyoukingakuCell.Value
King_of_Flies

2018/01/19 06:45

いろいろやり方があるのですごく単純な方法で結果だけできるようにすると、こうなります。 'Sheets1にはコピー元のデータがあるシート名を入れてね Sheets("Sheet1").Select Range("B37", Range("M37").End(xlDown)).Select Selection.Copy 'Sheet2にはコピーしたい先のシート名を入れてね Sheets("Sheet2").Select Range("B2").Select ActiveSheet.Paste
King_of_Flies

2018/01/19 06:47

上の処理は動作確認済みなのでやってみてください。
退会済みユーザー

退会済みユーザー

2018/01/19 06:50

わかりやすく、たくさんのアドバイス賜り、大変ありがとうございます! いろいろなアプローチの仕方があるのですね!! 下記で、うまく実行することができたのですが、 コメントいただいた方法も試してみます!! Dim sagyokingakuCell As Excel.Range With copyWs Set sagyokingakuCell = _ .Range( _ .Range("B37"), _ .Cells(.Rows.Count, "M").End(xlUp) _ ) End With 'copyWs With pasteWs Set pasteCell = .Cells(.Rows.Count, "D").End(xlUp).Offset(1, 0) _ .Resize(sagyokingakuCell.Rows.Count, sagyokingakuCell.Columns.Count) End With 'pasteWS pasteCell.Value = sagyokingakuCell.Value
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問