• ベストアンサー

エクセル マクロ 範囲リスト

エクセル マクロ 範囲設定リスト フォームにて Textbox1を作成して 数字入力の値(1~4)によって リストをコンボボックス1に表示させたい! 例) フォーム1の Textbox1に数字の2を入力すると コンボボックス1にリストが表示される。 リストの表示は別のファイルのDディスクの”呼吸.xls”の中の A2~以降に数字があり、B2~に題名がある。   A B 2  2 血圧 3   1   呼吸 4   1 脈 5   3  熱 6  4 肺 数字の2なら”血圧”を表示 数字の1なら”呼吸””脈”を表示 させたいです! このように マクロを作成したいので記述を教えて下さい! お願いします!

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

  • ベストアンサー
  • jellya_a
  • ベストアンサー率35% (12/34)
回答No.3

No1です。 >最初の宣言は下記の記述ですか? >Private Sub TextBox5_Change() 今回の場合、テキストボックスが変化したら 処理を行いたいのであれば、 上記宣言で間違いないと思います。 ちなみに、dimを使用して、 lngの型を決めてあげてください。 また、パスについてですが、 これも毎回書くのは面倒なので、 dim strPath as string strPath=D:\アセスメント のように格納してあげるのも手です。 フルパスだと下記のようになります。 strPath & "\体調" 格納しない場合、パスは””でくくってあげてくださいね。 "D:\アセスメント\体調" ワークブックもそうですが、setを使って、 指定した方が安全です。 詳しくは下記のサイトを参考にしてはいかがでしょうか。 http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_060_03.html

pop2003
質問者

補足

ありがとうございます! 親切なコメント本当に嬉しいです。 サイトを見て勉強しましたが 難しい・・です。また怒られそうですね!すいません。 せっかくここまで教えていただいたのに・・ 私なりの解釈を記述します! Private Sub TextBox5_Change() Dim lng As Long lng = 1000 ”lngの型” ”setの型” Dim WBK As Workbook Dim SH1 As Worksheet Set WBK = Workbooks("体調.xls") Set SH1 = WBK.Worksheets("Sheet1") for lng = 2 to 最終行 ”←文字で良いのでしょうか?” ("Sheet1").Range("B65536").End(xlUp).Row ”↑最終行の型” if TextBox5.text=SH1.cell(lng,1) then  ”cellが見つからないとエラーが表示されます!” ComboBox2.text=SH1.cell(lng,2) exit for end if next lng すいません!丸投げは嫌がられるのは理解しています!

その他の回答 (3)

  • jellya_a
  • ベストアンサー率35% (12/34)
回答No.4

>for lng = 2 to 最終行 ”←文字で良いのでしょうか?” 文字でも問題ないですが、 最終行=SH1.Range("B65536").End(xlUp).Row のように、for文が始まるまでに値を格納してあげてください。 もちろん最終行もlng同様宣言してあげてくださいね。 ("Sheet1").Range("B65536").End(xlUp).Row ↑上記だと、どのシートかわからないので、 どのブックのシートか書いてあげてくださいね。 また、値を確認するには、デバッグやウォッチ式を使用してあげて 下さい。 ちなみに、SH1.cell(lng,1)と有りますが、cellsではないと エラーになると思います…ご確認ください。

pop2003
質問者

お礼

返事遅れてすいません! Private Sub TextBox5_Change() Dim lng As Long lng = 1000  Dim WBK As Workbook Dim SH1 As Worksheet Set WBK = Workbooks("呼吸看護計画.xls") Set SH1 = WBK.Worksheets("Sheet1") Dim 最終行 As Long 最終行= SH1.Workbooks[("呼吸看護計画.xls")].Worksheets("Sheet1") ”↑構文エラーになってしまいます” Range.("B65536").End(xlUp).Row for lng = 2 to 最終行  if TextBox5.text=SH1.cells(lng,1) then  ComboBox2.text=SH1.cells(lng,2) exit for end if next lng もし良かったら私が作ったファイルを一度 見て欲しいです! pop2003dayo←その後はヤフーのアドレスです! 良かったらお返事下さい! 本当にすいませんです。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

別のファイルを 全件(全行)読んで、A列が1や2や(テキストで指定された数字)なら,B列文字列を、リストボックスに表示すれば仕舞いでしょう。 コードまで要求しているの? (1)全行読むときの最終行の捉え方 (2)リストボックスにアイテムの追加し方    クリアし方 (3)全行比較検索がイヤならFind(FindNext)メソッドなど利用 ーー (1)は回答に頻出 End(xlUp) でWEB検索 (2)WEBで調べること AddItem VBA (3)検索のマクロの記録で判る ーー >範囲設定リスト はなぜ出てくるのか?

pop2003
質問者

補足

すいませんでした! WEB検索で頑張ります。 今回作っているのは、私にとって 複雑に作っています。 マクロの記述がかなり入っているので 頭が混乱しています! 勉強不足ですね・・調べて見ます! もし分からない場合はまた教えて下さい。 アドバイスありがとうございます。

  • jellya_a
  • ベストアンサー率35% (12/34)
回答No.1

for文を使うのがいいのではないでしょうか?? for lng = 2 to 範囲最後  if テキストボックス.text=シート.cell(lng,1) then    コンボボックス.text=シート.cell(lng,2) exit for end if next lng と言う感じですかね。 ただ、コンボボックスは選択する一覧を表示するのに使うイメージが 強いので、コンボボックスから選んだ数字を テキストボックスもしくはラベルに貼り付ける仕様の方が 使いやすいのではないでしょうか??

pop2003
質問者

補足

ありがとうございます。 すいません!もう少し教えてください。 最初の宣言は下記の記述ですか? Private Sub TextBox5_Change() for lng = 2 to 範囲最後 if TextBox5.text=D:\アセスメント\体調("Sheet1").cell(lng,1) then ComboBox2_.text=D:\アセスメント\体調("Sheet1").cell(lng,2) exit for end if next lng すいません!全くの素人なので 是非、教えて下さい。 TextBox5とComboBox2は実際のものです! シートを指定する時も少し分かりません! Dデスクの"アセスメント"のフォルダの中の "体調"というフォルダの中の"看護.xls"のエクセルに データーがあります!

関連するQ&A

  • エクセル マクロ コンボボックスリスト

    sheet1の場所でボタンクリックでフォーム表示。その中でコンボボックスリストを作成。 sheet3にデーターをA列に作りました。 1)フォームの中のコンボボックスをクリックしてリスト表示させた い。マクロの記述を教えてください。 2)コンボボックスリストに表示した文字をsheet2に記録するボタンを作ったがマクロの記述を教えてください。

  • エクセル マクロ 時間

    1)フォームにて時間を表示する。コンボボックス2つ作る。コマンドボタン(記録)を1つ作る。 2)1つのコンボボックスには時を選択させる。リストはリストはSheet2に01・02・03・・・とA列に00まで作る。 3)もう1つのコンボボックスには分を選択させる。リストはSheet2に01・02・03・・・とB列に00まで作る。 4)フォームの記録ボタンを押すと、sheet1のA2に(例 23:34)と表示させたい。 マクロの記述を教えてください。

  • コンボボックスのリストについて(エクセル、マクロ)

    またお世話になります。 多分簡単な疑問だと思うのですが・・・、 ユーザーフォームのコンボボックスのRowsourceの 設定に関して可変式にしたいので以下のように マクロ(一部を抜粋)を組んでみました。 Dim b As Integer b = 2 Do b = b + 1 Loop Until Sheets(3).Cells(b, "A") = "" ComboBox1.RowSource = Range(Cells(2, "A"), Cells(b - 1, "C")) が、「型が一致しません」と出てうまくいきません。 どうしたらよいでしょうか? また、 A列   B列 C列 2005/1/1 東京 10 ・ ・ ・ のようにシートには並んでいるものを コンボボックスのリストとして取り入れたいのですが 変な5桁の数字しか現れず(たぶんこの数字は 2005/1/1を標準値化した数値なのでしょうが) 3つきれいにそろって表れません。 こちらの方も解決していただけないでしょうか?

  • エクセル マクロの記述 =VLOOKUP()

    エクセル マクロ ユーザーフォームを作成して そのフォ-ムのなかにテキストBoxを2つ 作り、TextBoX1にID番号(Sheet1にA列にID番号、B列に氏名あり)を入力すると、TextBox2に氏名が表示出来るようにしたいです。 そのような記述を教えて下さい。 お願いします。

  • ExcelVBA コンボボックスリストのリセット

    4月からマクロを勉強し始めて、壁にぶつかっています。 ユーザーフォームでオプションボタンの下にコンボボックス(1)を、そのさらに下にもうひとつコンボボックス(2)をレイアウトしました。 コンボボックス(1)は選ばれたオプションボタンによって、異なるリストを表示させるようにしてあります。 わからないのは、コンボボックス(2)のリストをコンボボックス(1)で選ばれた文字によって変えたいのです。 たとえば、コンボボックス(1)で"A"と選択されたら、コンボボックス(2)にはリストA'が、(1)で"B"と選択されたら、(2)にはりすとB'が…、というように、場合分けさせたいのです。 方法をご存知の方がいらっしゃいましたら、ご教示ください。よろしくお願いいたします。

  • エクセルマクロによる顧客リスト検索

     エクセルで作成している顧客リストの検索をするマクロを作成したいと考えています。具体的には、ユーザーフォームに顧客名・勤務先・役職のテキストボックスを作り、顧客名を入力してコマンドボタンを押すと勤務先などがテキストボックスに表示されるものを作ろうとしています。  ユーザーフォームにテキストボックスやコマンドボタンを作る方法はわかりましたが、それらを顧客リストと結び付ける方法がわかりません。ネットで「エクセルマクロ講座」を探してみましたが、こうした事例にあてはまる講座もみつかりませんでした。  どなたかマクロに詳しい方は教えていただけないでしょうか。あるは上記の事例にあてはまるエクセルマクロの講座がWeb上にあれば、それを教えていただけないでしょうか。

  • 入力値をListボックスに表示させたい。

    (仕様1) ユーザーフォーム1でテキストボックス1~5に 入力した値をListボックスに表示させたい。 例えば textbox1=A,textbox2=B,textbox3=C・・・ と入力されたら、 A B C D E のように順に横方向一列に表示させるようにしたいです。 (仕様2) これをコマンドボタン1を押す度にリストボックス1に新しく追加されていく 様にしたいのですが、できますでしょうか。 例えば、 A B C D E A C D B E (テキストボックスに入力後ボタン1を押す) A C B D E (テキストボックスに入力後ボタン1を押す)

  • エクセルマクロリストボックスの作成方法について

    最近、マクロを勉強し始めたばかりで困っています。 【質問内容】 ダイアログを作成し、リストボックスからリストを作成する方法についてですが、例えばリストボックスが2つあり (1)リストボックス1では、「A、B」が選択できる。 (2)(1)で「A」を選択するとリストボックス2では「C、D」が選択できる。 (3)(1)で「B」を選択するとリストボックス2では「E、F」が選択できる。 といった、エクセルで言えば入力規則のindirect関数のような設定方法についてお教えいただけないでしょうか? 恐れ入りますがよろしくお願いいたします。

  • Excelで、コンボボックスで選択したとき特定のマクロを動かす

    1つのシートにコンボボックス(フォームコントロール)を2つ並べてあります。  コンボボックス”ドロップ1”   コンボボックス”ドロップ2”  【選択肢】             【選択肢】  ・1回                ・A  ・2回                ・B  ・3回 とあります。それぞれのコンボボックスの選択肢は、別のシートに名前を定義して表示するようにしてあります。 その際、上の例だとマクロを6種類用意してあります。  (1) 1回A  (2) 1回B  (3) 2回A  (4) 2回B  (5) 3回A  (6) 4回B とあり、1つ目のコンボボックスで「2回」を、2つ目のコンボボックスで「B」を選んだ場合、 (4)のマクロを実行するようにするにはどのようにしたらよいでしょうか? ※ コンボボックスは両方選ばない限りはマクロを実行させません。 また、両方既に選択してあり、そのマクロが一度実行させた後、一方だけ変更しても他のマクロを実行させたいです。 また、本件とは別の内容となっていまいますが、コンボボックスなどが”フォームコントロール”と”ActiveX コントロール”と2種類あるのですが、どのように違うのでしょうか? ちなみにExcelは2007です。ご教授よろしくお願いします。

  • エクセル リストボックスについて

    現在、エクセルにて入力フォームを作っているんですが、入力規則の設定のとこでつまづいています。 つまづいているのは、例えば・・・リスト一覧の表を別のファイルのシートに用意をします。ここでの仮名として「リスト一覧表」を作ったとします。 そして本ファイルであるシートの中のセル(D10)に「リスト一覧表」から入力規則のように表示をするためにコンボボックスを使い、 「リスト一覧表」から使いたいリストを選んで「D10」に表示をして、 なおかつ、印刷時には「コンボボックス」の表示を出したくありません。そこで表示を消すにはどうしたらいいのか教えてください。 よろしくお願いいたします。

専門家に質問してみよう