こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

EXCEL VBAについて

こんばんは、VBA勉強中です。いろいろ調べていますが、以下のようなものを作るときに、どのように記述してよいか分からないのでご教授お願いします。

(やりたい事)
Userformで、日付とランダムな数字を選択できるBOXを作成し、検索ボタンを押すと、A列にある名前が表示されるというものをつくりたいと思っています。

例えば、下の表でいうと、2日の158と検索すると、斉藤という名前され、3日の236を検索すると、鈴木が表示されるというものです。

      A    B  C   D・・・
1行目 高橋   1   .2.  3.・・・31  ←日付
2行目  鈴木  305  258 236 210
3行目 斉藤   215  158 214

よろしくお願いいたします。EXCEL2000を使用しています。

投稿日時 - 2011-10-26 19:15:27

QNo.7095951

困ってます

質問者が選んだベストアンサー

勉強を始めたばかりで、これぐらいの課題をやるというのは無理がある。丸写ししないと進まない状態だろう。
直ぐフォームななど言い出さず、シートのセルの値についての処理(色んな場合の処理)を、本などでじっくり勉強してからにすべきだ。シートの検索も中級以上の話で出てくる。
日付と数値もInputboxなどでやっておいて、十分処理のほうで自信が出来たら、GUIの方にもレパートリーを広げる。
フォームだとイベントという概念も勉強しないとならない。
ここは、思いついた例題の回答をする仕組みではないよ。もっと数日は、勉強して・調べてわからない点を絞って質問すること。特にマクロの記録は活用のこと。
ーー
アドバイスらしいものを書いておく。
(1)日付は、年月を別セルに設けて、第1行目の日付は日付シリアル値の定数でセットすることを勧める。
(2)フォームで指定した日付で第1行目を(日付の)検索する。
どういうコードになるかは、マクロの記録を取ればわかると思う。RangeのFindメソッドを使うのが良いだろう。
それで指定した日付の(データの)ある列がわかる
(3)そこでその列で指定した数値のある行の検索を行う。
(4)見つかった行のA列のデータ(この場合名前)が求めるものだ。
ーー
(2)の日付は2対縦横あることは間あげられない。しかし(3)の数値は同じものが同じ列に無きにしも非ずだろう。初心者はよくこのことを忘れるが、非常に大切な点だ。2つ以上ないと仮定できればコードは普通簡単になる。
もし本件あるとするなら、「エクセル VBA Find」でGoogle照会すればコード例は載っているが、初心者に適当なレベルではないと思う。

投稿日時 - 2011-10-26 20:01:33

お礼

おはようございます。アドバイスありがとうございます。

(2)のアドバイス、今回は同じ数値が無いので最初から気にしていませんでしたが、今後ある場合もあるので、その場合の勉強をしておきます。

vbaはなかなか面白いですね。また、もう少し勉強して、疑問が出たら質問しますので、その時はよろしくお願いします。

投稿日時 - 2011-10-27 06:25:04

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問