![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
エクセル2002使用です。
A1セル 日付入力(ex.2005/7/25)
A2セル A1セルから月のみワークシート関数で取得 =month(A1)
A3セル 日付入力 '12ヶ月分(ex.2005/7/25~2006/6/25)
A4セル A3セルから月のみワークシート関数で取得 =month(A3) ’12ヶ月分
3行目、4行には12ヶ月分AからL列に同じ設定があります。
(この質問にはあまり関係ないですが・・・)
A7セルにA2の値を参照して入力のため
sub test()
Dim Myrg as variant ’またはstring、Duble
Set Myrg = Range("A4:L4") _
.Find(what:=range("A2").value, lookat:=xlWhole)
range("A7").value = myrg
end sub
とすると、Myrgはemptyのままで数値を拾ってくれません。
A2セルとA4~L4セルをA5セルA6~L6セルにフォーマットして
sub test()
Dim Myrg as variant ’またはstring、Duble
Range("A5").Value = Format(Range("A2").Value, "##")
Range("A6").Value = Format(Range("A4").Value, "##")
Range("B6").Value = Format(Range("B4").Value, "##")
’(以下12ヶ月分フォーマット)
Set Myrg = Range("A6:L6") _
.Find(what:=range("A5").value, lookat:=xlWhole)
range("A7").value = myrg
end sub
とするとちゃんと数値を拾ってくれます。
分からないのは、
1.変数variantは、万能ではないのでしょうか?
2.ワークシート関数で得た数値はすべて一度フォーマットする必要があるのでしょうか?
フォーマットしない良い方法はあるのでしょうか?
ちなみにキーボードから入力した数値もちゃんと拾ってくれます。
詳しい原因がわからないのでよろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちは。
>Set Myrg = Range("A4:L4") _
>.Find(what:=range("A2").value, lookat:=xlWhole)
Range("A4:L4")
のところには、一体、ここには何が入っているのか、よく分かりませんが、基本的なことですが、 Find メソッドの引数は、あまり省略しすぎては、うまくいきません。その都度、選んでください。今回は、LookIn:=xlValuesを入れてみました。
例:
Sub test()
Dim Myrg As Range
Set Myrg = Range("A4:L4"). _
Find(what:=Range("A2").Value, _
LookIn:=xlValues, _
lookat:=xlWhole)
If Not Myrg Is Nothing Then
Range("A7").Value = Myrg.Value
End If
End Sub
Findメソッドが返すのは、Rangeオブジェクトです。また、その後のMyrg は、暗黙的にそのまま値を取り出してもエラーにはなりませんが、なるべく、プロパティをつけて、Myrg.Valueにしてください。だから、Myrg の変数型は、「String、Duble」は、ありえませんし、エラーになります。
これで様子をみてください。
Wendy02 さま 早速のご回答ありがとうございました。
うまくいきました。
取得する値や返す値がまだ今一よくわからずご迷惑をおかけしました。
今後ともよろしくお願いします。
また、Wendy02さまのコードで一度取得すると
前の私の正しくないコードでも取得するのがまた不思議で・・・
どうもありがとうございました
No.2
- 回答日時:
Wendy02さんの回答の通りだと思います。
Findメソッドに関して下記のような記載がありましたので補足情報として。
http://www.asahi-net.or.jp/~zn3y-ngi/YNxv98c2.html
【引数を省略した場合の注意事項】
What以外の引数は省略可能ですが、省略すると既定値が使われるものと、直前で使用されたときの値が使われるものとがあります。
そのため LookIn, LookAt, SearchOrder, MatchByte は明示的に指定したほうが安全です。
「Findメソッドの引数一覧表」
http://www.asahi-net.or.jp/~zn3y-ngi/YNxv98c_fin …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) マクロで特定日より1日前の日を求めたい 6 2022/05/08 09:23
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ダブルクリックでセルに色をつ...
-
vbaで指定したセルより下の行を...
-
エクセルでスピンボタンとスク...
-
エクセルでセルをクリックする...
-
IF関数で違う値もTRUEになる
-
(エクセルVBA)セルを左クリッ...
-
Excel VBA:フォーム←→セルのア...
-
セルをクリックしたら色を変え...
-
Excelマクロ セルを行頭に移動
-
VBAでの SendKeysの変数指定方法
-
あああ..ああい..ああう とい...
-
エクセル マクロ オートフィ...
-
エクセルVBAが途中で止まります
-
特定の文字がある行以外を削除...
-
Excel UserForm の表示位置
-
空白セルをとばして転記
-
VBAで色の付いているセルの行削除
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
【EXCEL】連続データの個数を抽...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vbaで指定したセルより下の行を...
-
VBAでの SendKeysの変数指定方法
-
エクセルでセルをクリックする...
-
Excelマクロ セルを行頭に移動
-
Excel VBA:フォーム←→セルのア...
-
マクロのデータ削除
-
【VBA】アクティブセルだけ背景...
-
IF関数で違う値もTRUEになる
-
ファイルサーバー上のexcelファ...
-
エクセルマクロで「セルのサイ...
-
ダブルクリックでセルに色をつ...
-
(エクセルVBA)セルを左クリッ...
-
Excel VBA で色付きのセルの値...
-
VBA Rangeの足し算
-
セルをクリックしたら色を変え...
-
【EXCEL-VBA】特定の値の入った...
-
excel マクロでの特殊文字入力方法
-
【マクロ】1つのセルから結合...
-
Excelで数値の変化をカウントし...
-
ExcelVBA コンボボックスに入力...
おすすめ情報