Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8929 / 13646 ツリー ←次へ | 前へ→

【30290】findで別のブックに値を代入したい kono 05/10/24(月) 16:10 質問[未読]
【30292】Re:findで別のブックに値を代入したい Kein 05/10/24(月) 16:38 回答[未読]
【30294】Re:findで別のブックに値を代入したい kono 05/10/24(月) 16:59 質問[未読]
【30296】Re:findで別のブックに値を代入したい Kein 05/10/24(月) 17:17 発言[未読]
【30297】Re:findで別のブックに値を代入したい kono 05/10/24(月) 17:33 質問[未読]
【30300】Re:findで別のブックに値を代入したい kono 05/10/24(月) 19:10 お礼[未読]

【30290】findで別のブックに値を代入したい
質問  kono  - 05/10/24(月) 16:10 -

引用なし
パスワード
   教えてください。
activesheetの
A1=カタログNo.
E20=原価
B20=点数
A4=改訂No.
が入っています。
別のブック(『売上』ブックの『原価一覧表』というシート)の
A列にカタログNo.の一覧があります。
findでカタログNo.の行を見つけ、D列=改訂No.、F列=原価、G列=点数
をそれぞれ代入しようと思いました。
activesheeと同じフォームのブックが100以上あるので、
personalにコードを書きました。

Sub 原価jump()
Dim kata As String
Dim genka As String
Dim tensu As String
Dim kaite As String
Dim ra As String
Dim r1 As Range
kata = ActiveWorkbook.ActiveSheet.Range("A1")
genka = ActiveWorkbook.ActiveSheet.Range("E20")
tensu = ActiveWorkbook.ActiveSheet.Range("B20")
kaite = ActiveWorkbook.ActiveSheet.Range("A4")

With Workbooks("売上.xls").Worksheets("原価一覧表").Columns("A:A")

Set r1 = .Find(what:=kata, LookIn:=xlFormulas, lookat:=xlPart, searchdirection:=xlNext, MatchCase:=False)
r1.Activate
If Not r1 Is Nothing Then
ra = r1.Address '⇒ここがデバックで止まりました
Do
r1.Offset(0, 3).Value = kaite
r1.Offset(0, 5).Value = genka
r1.Offset(0, 6).Value = tensu
Set r1 = .FindNext(r1)
Loop While Not r1 Is Nothing And r1.Address <> ra
Else
MsgBox "カタログNo.がありません"
End If
End With

End Sub

上記の『ra=r1.Address』でエラーが出ました。
どこに問題があるのか、おわかりになる方がいらっしゃいましたら
是非、教えてください。よろしくお願い致します。

【30292】Re:findで別のブックに値を代入したい
回答  Kein  - 05/10/24(月) 16:38 -

引用なし
パスワード
   Set r1 = .Find(what:=kata, LookIn:=xlFormulas, lookat:=xlPart, _ searchdirection:=xlNext, MatchCase:=False)
If Not r1 Is Nothing Then ra = r1.Address

というように書いて下さい。

【30294】Re:findで別のブックに値を代入したい
質問  kono  - 05/10/24(月) 16:59 -

引用なし
パスワード
   ▼Kein さん 回答ありがとうございます。
>Set r1 = .Find(what:=kata, LookIn:=xlFormulas, lookat:=xlPart, _ searchdirection:=xlNext, MatchCase:=False)
>If Not r1 Is Nothing Then ra = r1.Address
>
>というように書いて下さい。

上記の通り実行してみたら、
elseとend ifがいらなくなるのですか?
メッセージがでたので削除して実行しました。

今度はr1.Activate の部分がデバックになりました。
『RangeクラスのActivateメソッドが失敗しました』
というメッセージが出ています。

ActiveworksheetのA1の値(カタログNo.)は、
確実に原価一覧表に存在しています。
よろしくお願い致します。

【30296】Re:findで別のブックに値を代入したい
発言  Kein  - 05/10/24(月) 17:17 -

引用なし
パスワード
   どのシートをActiveにした状態で、そのマクロを実行しているのでしょーか ?
もし、Worksheets("原価一覧表") であるなら、変数 kata には A1 の値が
入り、A列を検索すれば当然、r1 は最初にヒットした A1 になるはずです。
原価一覧表シートを開いているなら、ですよ。

【30297】Re:findで別のブックに値を代入したい
質問  kono  - 05/10/24(月) 17:33 -

引用なし
パスワード
   ▼Kein さん:
>どのシートをActiveにした状態で、そのマクロを実行しているのでしょーか ?
ActiveになっているのはWorksheets("原価一覧表") に代入する値を
持っている別のBOOKの中のsheetです。

>もし、Worksheets("原価一覧表") であるなら、変数 kata には A1 の値が
>入り、A列を検索すれば当然、r1 は最初にヒットした A1 になるはずです。
Kata=Activeworkbook.Activeksheet.Range("A1")
としているので、原価一覧表がActiveだと、原価一覧表のA1の値が
変数Kataに入りませんか?

>原価一覧表シートを開いているなら、ですよ。
原価一覧表シートは開いています。

すみません。修行僧なので、良くわからないのです。
お忙しいところお手数をおかけします。
よろしくお願いします。

【30300】Re:findで別のブックに値を代入したい
お礼  kono  - 05/10/24(月) 19:10 -

引用なし
パスワード
   keinさま

もう一度実行してみたら、
なぜかうまく行きました。

本当にお世話様でした。
どうも、ありがとうございました!

8929 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free