[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『シート内を検索してフォーム上のテキストボックス・コマンドボタンへ結果を表示するには?』(murako39)
はじめて書かせていただきます。 初心者です。初めてマクロに挑戦なので、色々探して顧客管理のマクロを作っています。 新規登録や上書きなどは、出来上がっていますが、シート内を検索してフォーム上のテキストボックス・コマンドボタンへ 結果を表示するには?ですが、コマンドボタンだけがどうにもなりません。 検索の記述だけ載せました。宜しくお願い致します。
Option Explicit ' 「性別」から選択された値を格納しておく文字列型変数sexを宣言する。 Private sex As String ' データの入っている行の個数を格納するLong型変数lastRowを宣言する Private lastRow As Long '■「登録」ボタンがクリックされたときの処理
Private Sub CommandButton1_Click()
Dim sno If 顧客番号テキストボックス.Text <> "" Then sno = Application.Match(顧客番号テキストボックス.Text, Sheets("排出事業者").Columns(1), 0) If IsNumeric(sno) Then
郵便番号テキストボックス.Text = Sheets("排出事業者").Cells(sno, "B").Value 排出事業者名テキストボックス.Text = Sheets("排出事業者").Cells(sno, "C").Value 住所テキストボックス.Text = Sheets("排出事業者").Cells(sno, "D").Value 部署テキストボックス.Text = Sheets("排出事業者").Cells(sno, "E").Value 電話番号テキストボックス.Text = Sheets("排出事業者").Cells(sno, "F").Value 担当者名テキストボックス.Text = Sheets("排出事業者").Cells(sno, "G").Value Else
If 女性オプションボタン = True Then Sheets("排出事業者").Cells(sno, "H").Value = "女性" = 1 End If If 男性オプションボタン = True Then Sheets("排出事業者").Cells(sno, "H").Value = "男性" = 1 End If
郵便番号テキストボックス.Text = "見つかりませんでした" 排出事業者名テキストボックス.Text = "見つかりませんでした" 住所テキストボックス.Text = "見つかりませんでした" 部署テキストボックス.Text = "見つかりませんでした" 電話番号テキストボックス.Text = "見つかりませんでした" 担当者名テキストボックス.Text = "見つかりませんでした"
顧客番号テキストボックス.Text = ""
郵便番号テキストボックス.Text = ""
排出事業者名テキストボックス.Text = ""
住所テキストボックス.Text = ""
部署テキストボックス.Text = ""
電話番号テキストボックス.Text = ""
担当者名テキストボックス.Text = ""
End If
MsgBox "セルの値が検索されました" End If End Sub
< 使用 Excel:Excel2013、使用 OS:Windows7 >
Sheets("排出事業者").Cells(sno, "H").Value = "女性" = 1
これは、「"女性" = 1」という論理演算の結果をセルに代入する意味であり、絶対一致しないので、
セルにはFALSEしか入りません。それ以前に、文字列=数値という比較では、型が違うエラーになります。
なにがしたいのでしょう?
それと、オプションボタンをチェックするロジックは、If文がElseのときしか通りませんが、良いの?
(???) 2014/10/17(金) 11:09
すみません。 ご指摘されたElseは、外しました。何がしたいかと言いますと、検索結果をテキストボックスとオプション ボタンにもチェックが入るようにしたいのです。 少し変えてみましたので載せます。
If 女性オプションボタン = True Then Sheets("排出事業者").Cells(sno, "H").Value = 女性オプションボタン = True End If If 男性オプションボタン = True Then Sheets("排出事業者").Cells(sno, "H").Value = 男性オプションボタン = True End If
(murako39) 2014/10/17(金) 11:47
そもそも、女性オプションボタン = True なのに女性オプションボタンに代入する必要は無いでしょう?
(???) 2014/10/17(金) 11:53
こんな感じでいいのでしょうか?この記述にしたら検索出来なくなりました。
If Sheets("排出事業者").Cells(sno, "H").Value = True Then 女性オプションボタン.Value = True 男性オプションボタン.Value = False End If If Sheets("排出事業者").Cells(sno, "H").Value = True Then 男性オプションボタン.Value = True 女性オプションボタン.Value = False End If (murako39) 2014/10/17(金) 11:59
シートのセルとフォームのオプションボタン、ユーザーが印を付けやすいのはどちらですか?
シートに直接入力するならば、フォームなんて要りませんよね。ということは、判定に使うのは
オプションボタンのほうでしょう。
それと、If Sheets("排出事業者").Cells(sno, "H").Value = True Then という判定が
男女全く同じですよ。セルの値は、Trueのときは男性?女性? どちらにしたいのでしょう?
また、オプションボタンを使用したということは、男女のチェックは自動的にどちらかだけに印が付きますよね。
ということは、セルが女性のときにTrueにしたいなら、以下の1行で終わりませんか?
Sheets("排出事業者").Cells(sno, "H").Value = 女性オプションボタン.Value
(???) 2014/10/17(金) 12:30
教えていただいたSheets("排出事業者").Cells(sno, "H").Value = 女性オプションボタン.Valueですと セルにFalseが書き込まれてしまいます。男女関係無くです。 逆にして女性オプションボタン.Value = Sheets("排出事業者").Cells(sno, "H").Valueしたらコマンド ボタン女性側に灰色のチェックが入りましたが、男女どちらでも同じです。 色々変えてみましたがわかりません。 宜しくお願い致します。 (murako39) 2014/10/17(金) 14:13
元のソースでも、"見つかりませんでした"とセットした直後にそれを消していたので、見た目には何も表示されていませんでしたが、そこも考え直しましたか?
(???) 2014/10/17(金) 14:23
横から失礼します。 murako39さんの質問の意図が正しく伝わっていないのでは、と思います。
> シート内を検索してフォーム上のテキストボックス・コマンドボタンへ > 結果を表示するには?ですが、コマンドボタンだけがどうにもなりません。 (この「コマンドボタン」は「オプションボタン」の間違いだと思いますが)
ソースを見ると、検索した結果をフォームの各項目へ設定していますが、 オプションボタンへの設定の仕方がわからないという質問と読み取りましたが 違いますか?
検索結果が見つかった時と見つからなかった時、それぞれでの設定方法が わからないということでは?
皆さんの回答はオプションボタンを判断してシートのセルに設定する回答になっています。 (めいぷる) 2014/10/17(金) 14:34
そうです。それが知りたいのです。 質問の仕方すら駄目なんですね・・・すみません。 何日もずーっと考えてやりましたが、できません。 (murako39) 2014/10/17(金) 14:41
その場合、H列にはどのようなデータが入っていますか? 本当にTRUE/FALSEですか?
男/女という文字列だったりしませんか?
Private Sub CommandButton1_Click() Dim sno
顧客番号テキストボックス.Text = "" 郵便番号テキストボックス.Text = "" 排出事業者名テキストボックス.Text = "" 住所テキストボックス.Text = "" 部署テキストボックス.Text = "" 電話番号テキストボックス.Text = "" 担当者名テキストボックス.Text = ""
If 顧客番号テキストボックス.Text <> "" Then sno = Application.Match(顧客番号テキストボックス.Text, Sheets("排出事業者").Columns(1), 0) If IsNumeric(sno) Then 郵便番号テキストボックス.Text = Sheets("排出事業者").Cells(sno, "B").Value 郵便番号テキストボックス.Text = Sheets("排出事業者").Cells(sno, "B").Value 排出事業者名テキストボックス.Text = Sheets("排出事業者").Cells(sno, "C").Value 住所テキストボックス.Text = Sheets("排出事業者").Cells(sno, "D").Value 部署テキストボックス.Text = Sheets("排出事業者").Cells(sno, "E").Value 電話番号テキストボックス.Text = Sheets("排出事業者").Cells(sno, "F").Value 担当者名テキストボックス.Text = Sheets("排出事業者").Cells(sno, "G").Value
If InStr(Sheets("排出事業者").Cells(sno, "H").Value, "女") Then 女性オプションボタン.Value = True Else 男性オプションボタン.Value = True End If Else MsgBox "見つかりませんでした", vbExclamation, "エラー" End If End If End Sub (???) 2014/10/17(金) 14:48
???さんと衝突しましたが・・・
検索して見つかった時、オプションボタンへ表示する元ネタが設定されているのは Sheets("排出事業者").Cells(sno, "H")のセルですね? セルの値は何が設定されているのですか? 提示のソースだと、"女性"または"男性"と文字列が設定されているのでしょうか。 設定値が空白の場合もありますか?
その場合なら、見つかった時の設定は以下のように。
Select Case Sheets("排出事業者").Cells(sno, "H").Value Case "女性" 女性オプションボタン.Value = True 男性オプションボタン.Value = False Case "男性" 女性オプションボタン.Value = False 男性オプションボタン.Value = True Case Else 女性オプションボタン.Value = False 男性オプションボタン.Value = False End Select
見つからなかった場合は、上記Case Elseと同じでよいのでは。
(めいぷる) 2014/10/17(金) 14:55
すみません、訂正です。 オプションボタンは、どちらか一方にTrueを設定したらもう片方はFalseになるので、 以下でOKでした。
Select Case Sheets("排出事業者").Cells(sno, "H").Value Case "女性" 女性オプションボタン.Value = True Case "男性" 男性オプションボタン.Value = True Case Else 男性オプションボタン.Value = False ・・・ デフォルトでTrueにしておきたい方に End Select
※「Sheets("排出事業者").Cells(sno, "H").Value」に必ず男性/女性を表す値が 設定されている(空白やその他の値が無い)なら、???さんのコードが分かりやすいと 思います。
(めいぷる) 2014/10/17(金) 15:10
できました!!ありがとうございます! そうなんです、"女性"または"男性"と文字列にしてありました。何度も言葉足らずすみません。 ありまとうございました。助かります。 色々ネット検索するたびにこちらの掲示板を参考に見させていただいていて、何度質問しようか悩んだ ことか・・ 有難う御座いました。 (murako39) 2014/10/17(金) 15:26
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.