質問: コード入力してセルを選択するマクロ お読み頂きありがとうございます。 a列にコードが並んでいて、先頭行には横に1~31の日付を表す数字が入っているexcelシートがあります。コードは5桁で重複はありません。 この表でコード(ex.12345)と日付(ex.20)を指定することでそのコードと日付が交差する位置のセルを選択するマクロが作れるでしょうか。 例えば、マクロを実行するとコードと日付を入力するウインドを開いてコードと日付をそれぞれ入れる、あるいはコードと日付を組み合わせて(1234520)のように入力するとコード12345の20日に該当するセルを選択するようにしたいのですが。 当方、vbaの知識はほとんどない素人です。難しい解答が付いたらお礼も書けなくて困るな、と思いながら質問を書いている状態です。どうぞよろしくお願いします。
回答: #1です。 簡単なコメントを入れときます。 vbaヘルプがインストールされているなら inputbox 等の単語内にカーソルを置き、f1キーを押すと該当のヘルプが見れます。 sub test() dim fs, myday as integer 'inputboxでコードと日にちを指定して変数に代入(type:=1は数値) fs = application.inputbox("cd+日", "指定", type:=1) 'キャンセルや閉じるの場合はここで終了 if fs = false then exit sub '変数fs が 6桁未満だとここで終了 if len(fs) < 6 then exit sub 'mid関数で6桁以降をmydayに切り分け。cintは無くても動く myday = cint(mid(fs, 6, len(fs))) 'left関数でfsを先頭から5桁に置き換え。cintは無くても動く fs = cint(left(fs, 5)) 'a列をa1からfsで検索。r は、発見→そのrange、無い→nothingになる set r = columns(1).find(what:=fs, after:=range("a1"), lookat:=xlwhole) '見つからない時はここで終了 if r is nothing then exit sub '見つかったセル r の offset(行,列)を選択 r.offset(0, myday).select end sub #3さんでは無いけど、#3は下記のようにするとokでしょう。 find の lookat:=xlwhole は、編集-検索で「完全に一致する~」にチェックが無い状態で実行すると誤動作しますので追記してます。(1を指定しても10を選ぶ) dt = cdate(inputbox("日付")) を dt = inputbox("日付") に i = range(cells(2, "a"), cells(d, "a")).find(cd).row を i = range(cells(2, "a"), cells(d, "a")).find(cd, lookat:=xlwhole).row に j = range("b1:aj1").find(dt).column を j = range("b1:aj1").find(dt, lookat:=xlwhole).column に msgbox cells(i, j) を cells(i, j).select に