Excel VBA質問箱 IV

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

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


4120 / 13644 ツリー ←次へ | 前へ→

【58347】エラー:検索の型が一致しません(Loop使用時) aiko 08/10/20(月) 21:30 質問[未読]
【58348】Re:エラー:検索の型が一致しません(Loop... Hirofumi 08/10/20(月) 21:35 発言[未読]
【58350】Re:エラー:検索の型が一致しません(Loop... aiko 08/10/20(月) 21:49 発言[未読]
【58351】Re:エラー:検索の型が一致しません(Loop... かみちゃん 08/10/20(月) 22:07 発言[未読]
【58352】Re:エラー:検索の型が一致しません(Loop... aiko 08/10/20(月) 22:14 お礼[未読]
【58349】Re:エラー:検索の型が一致しません(Loop... かみちゃん 08/10/20(月) 21:39 発言[未読]

【58347】エラー:検索の型が一致しません(Loop使...
質問  aiko  - 08/10/20(月) 21:30 -

引用なし
パスワード
   色々な掲示板や参考書を見たのですが、解決できないので教えていただければと思い、投稿しました。

勤務管理表のマクロを作成しています。
列に1日〜31日を、行に(8行目)時間軸を打ち込んでおり、行の時間軸の中から出勤時間を検索し、フラグをつけるというマクロを作成しました。
同じ作業の繰り返しなので、Loopを使用したいと思っております。

Dim R As Integer
Dim L As Integer
R = 9
L = 1

Cells(R, 1).select
Do While R <= 39

Set foundcell = Rows("8").Find(Cells("R,32").Value) ←エラーになりました。
  foundcell.Activate
Activecell.Offset(L, 0).range("1").Select
  Application.CutCopyMode = False
  Activecell.FormulaR1C1 = "1"

R = R + 1
L = L + 1
Cells(R, 1)
Loop

Loopを使用せず、直接1日1日マクロを書けばエラーは出ませんでした。
しかし、できることならLoopを使用し、シンプルで見やすいものにしたいと思っております。
宜しくお願いいたします。

【58348】Re:エラー:検索の型が一致しません(Lo...
発言  Hirofumi  - 08/10/20(月) 21:35 -

引用なし
パスワード
   >Set foundcell = Rows("8").Find(Cells("R,32").Value) ←エラーになりました。

なぜ故にCells("R,32")でダブルクォーツで括っているのですか?

【58349】Re:エラー:検索の型が一致しません(Lo...
発言  かみちゃん  - 08/10/20(月) 21:39 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>同じ作業の繰り返しなので、Loopを使用したい
>
>Dim R As Integer
>Dim L As Integer
>R = 9
>L = 1
>
>Cells(R, 1).select
>Do While R <= 39
>
>Set foundcell = Rows("8").Find(Cells("R,32").Value) ←エラーになりました。

Cells(R, 1).select
と書けているのに、
Cells("R,32").Value
と書いているのは、どういう意味ですか?

R は、変数ではないのですか?

他にも記述として気になるところがありますが、とりあえず、そのあたりから
なおしてみてください。

なお、投稿の際には、VBE(Visual Basic Editor)に記述されたコードをコピー
して貼り付けるようにして、でるだけ見ている者が再現できるようにされたほうが
よろしいかと思います。

【58350】Re:エラー:検索の型が一致しません(Lo...
発言  aiko  - 08/10/20(月) 21:49 -

引用なし
パスワード
   早速のお返事ありがとうございます。

会社のパソコンからはデータが持ち出せないことや、フィルタがかかっており、直接ネットに繋げれないので、コードをコピーをせず一から打っていました。
その関係で間違って打ってしまいました。失礼しました。

>なぜ故にCells("R,32")でダブルクォーツで括っているのですか?
変数なので括るのはおかしいってことですよね?
先輩から引き継いだファイルをリバイスしておりまして、あまりまだよくわかっていない部分についてはそのまま少し修正して使用しておりました。

>Cells(R, 1).selectと書けているのに、
>Cells("R,32").Valueと書いているのは、どういう意味ですか?
Cells(R,32).selectの間違いです。

>R は、変数ではないのですか?
変数です。

【58351】Re:エラー:検索の型が一致しません(Lo...
発言  かみちゃん  - 08/10/20(月) 22:07 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>Cells(R, 1).selectと書けているのに、
>>Cells("R,32").Valueと書いているのは、どういう意味ですか?
>Cells(R,32).selectの間違いです。
>
>>R は、変数ではないのですか?
>変数です。

それであれば、たとえば、以下のようなテストコードにした場合、エラーになりますか?
条件によっては、別のエラーになるときもあると思うのですが、いかがでしょうか?

Sub Test()
 Dim foundcell As Range
 Dim R As Integer
 
 R = 9
 Set foundcell = Rows("8").Find(Cells(R, 32).Value)
 MsgBox foundcell.Address
End Sub

【58352】Re:エラー:検索の型が一致しません(Lo...
お礼  aiko  - 08/10/20(月) 22:14 -

引用なし
パスワード
   お返事有難うございます。
先ほど、打ち間違えていたコードを直し、「""」を外して試したところ、きちんと動きました。
変数なのに、「""」で囲んでいたことがエラーの原因になっていたのですね。
初歩的なことに全然気づきませんでした。

また、新しいコードを教えていただき有難うございます。
明日、会社のパソコンで「Dim foundcell As Range」のマクロを書いてみて試してみたいと思います。

本当に有難うございました。とっても助かりました。

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