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

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

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

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

671閲覧

他のシートを参照して、値を探す方法

dietter

総合スコア2

VBA

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2021/11/04 03:58

編集2021/11/04 04:30

sh2のcell(n,1)の値と一致するものをsh1のL列から探して、13列右に移動したセルの値をsh2のcell(n,8)に入力したく、
以下のようなマクロを組みました。

sh1 = workbooks(1).worksheets(1)
sh2 = workbooks(2).worksheets(1)

For n = 21 To 50 sh1.Columns("L").Find(What:=sh2.Cells(n, 1)).Activate ActiveCell.Offset(0, 13).Activate sh2.Cells(n, 8).Value = ActiveCell.Value Next

しかし、
エラー:1004
rangeクラスのactiveメッソドが失敗しました。
のようなエラーが出てきてしまい実行することが出来ませんでした。

解決方法や、何か他の方法があれば皆様のお知恵を借りたいです。
よろしくお願いいたします。

do loopを使ってactivecell.value=""になるまで(21-50までの最後まで値が入っていない場合があるため)上記の動作を繰り返すことが出来ると大変助かります。

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

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

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

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

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

guest

回答1

0

ベストアンサー

アクティブでないシートのセルを選択しようとしているエラーでしょう。
事前にシートをアクティブにしておけばエラーはでなくなると思います。

vba

1 For n = 21 To 50 2 sh1.Activate 3 sh1.Columns("L").Find(What:=sh2.Cells(n, 1)).Activate 4 ActiveCell.Offset(0, 13).Activate 5 sh2.Cells(n, 8).Value = ActiveCell.Value 6 Next

そもそもValueに代入するだけならアクティブにする必要はないです。
また、一致するデータがなかった場合はエラーになりますので、
これらを考慮すると下記のようなコードになります。

vba

1 Dim Findcell As Range 2 For n = 21 To 50 3 Set Findcell = sh1.Columns("L").Find(What:=sh2.Cells(n, 1)) 4 If Not Findcell Is Nothing Then '一致するセルが見つかったら 5 sh2.Cells(n, 8).Value = Findcell.Offset(0, 13).Value 6 End If 7 Next

投稿2021/11/04 04:28

hatena19

総合スコア34107

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

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

dietter

2021/11/04 04:41

hatena19様 いつも大変お世話になっております。 先ほどに引き続きご回答頂き本当にありがとうございます。 無事解決しました!! 今後ともご教示頂けると幸いです。 よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問