Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6509 / 13644 ツリー ←次へ | 前へ→

【44775】メッセージボックスについて 田中 06/12/1(金) 0:21 質問[未読]
【44780】Re:メッセージボックスについて りん 06/12/1(金) 9:17 発言[未読]
【44784】Re:メッセージボックスについて 田中 06/12/1(金) 10:58 質問[未読]
【44785】Re:メッセージボックスについて わさび 06/12/1(金) 11:54 発言[未読]
【44788】Re:メッセージボックスについて 田中 06/12/1(金) 12:46 質問[未読]
【44792】Re:メッセージボックスについて わさび 06/12/1(金) 14:55 発言[未読]
【44796】Re:メッセージボックスについて 田中 06/12/1(金) 15:59 質問[未読]
【44810】Re:メッセージボックスについて わさび 06/12/1(金) 18:08 発言[未読]
【44816】Re:メッセージボックスについて 田中 06/12/1(金) 21:52 お礼[未読]
【44812】Re:メッセージボックスについて Kein 06/12/1(金) 18:48 回答[未読]
【44818】Re:メッセージボックスについて 田中 06/12/1(金) 22:06 お礼[未読]

【44775】メッセージボックスについて
質問  田中  - 06/12/1(金) 0:21 -

引用なし
パスワード
   ユーザーフォームの中にテキストボックスを配置して入力すると”OK"のメッセージ
ボックスが表示するコードにしてるのですが、”OK"をクリックすると、終わってしまいます。続けてするには何かコードを足さないといけないのでしょうか?よろしくお願いします。

【44780】Re:メッセージボックスについて
発言  りん E-MAIL  - 06/12/1(金) 9:17 -

引用なし
パスワード
   田中 さん、おはようございます。
>ユーザーフォームの中にテキストボックスを配置して入力すると”OK"のメッセージ
>ボックスが表示するコードにしてるのですが、”OK"をクリックすると、終わってしまいます。続けてするには何かコードを足さないといけないのでしょうか?よろしくお願いします。
終わるとは?
どんな風にメッセージボックスの出るコードを書きましたか?

【44784】Re:メッセージボックスについて
質問  田中  - 06/12/1(金) 10:58 -

引用なし
パスワード
   りんさん おはようございます。

   Dim Msg As String
   If TextBox1.Text="あ"Then
   Msg="せいかい"
   Else
   Msg="ちがうよ"
   End If
   MsgBox Msg

このコードをコマンドボタンの中に入れました。”あ”をテキストに入れると
 せいかい とでるのですが次にやろうとすると、ユーザーフォームの実行を
 しないとできない状態です。よろしくお願いします。

【44785】Re:メッセージボックスについて
発言  わさび  - 06/12/1(金) 11:54 -

引用なし
パスワード
   ▼田中 さん:
>   Dim Msg As String
>   If TextBox1.Text="あ"Then
>   Msg="せいかい"
>   Else
>   Msg="ちがうよ"
>   End If
>   MsgBox Msg
>
> このコードをコマンドボタンの中に入れました。”あ”をテキストに入れると
> せいかい とでるのですが次にやろうとすると、ユーザーフォームの実行を
> しないとできない状態です。よろしくお願いします。


ユーザーフォームも消えてしまうのですか?


それとも、メッセージボックスの“OK”を押したあともユーザーフォームは残っていて、
いちいちテキストボックスをクリックして入力しなおすのではなく、
自動的にフォーカスさせたいということであれば、
  TextBox1.SetFocus
を追記します。

また、入力した文字を全部選択した状態でフォーカスさせるなら、
  With TextBox1
    .SelStart = 0
    .SelLength = Len(.Text)
    .SetFocus
  End With
を追記します。

見当違いでしたら、すみません。

【44788】Re:メッセージボックスについて
質問  田中  - 06/12/1(金) 12:46 -

引用なし
パスワード
      わさびさん ありがとうございます。
>
>>   Dim Msg As String
>>   If TextBox1.Text="あ"Then
>>   Msg="せいかい"
>>   Else
>>   Msg="ちがうよ"
>>   End If
>>   MsgBox Msg
>>   TextBox1.SetFocus これで思ったようにできました。
>>  
    でも私の本で調べてもsetfocusの記述がなく意味がわかりません。
    あと”せいかい”で”OK"ではなく
     ”せいかい” ”つづける?” はい いいえ というメッセージ
     をだしたいのですが可能でしょうか?メッセージボックスの記述を
     試してみたのですができませんでした。よろしければご指導願います。

【44792】Re:メッセージボックスについて
発言  わさび  - 06/12/1(金) 14:55 -

引用なし
パスワード
   ▼田中 さん:
>>>   Dim Msg As String
>>>   If TextBox1.Text="あ"Then
>>>   Msg="せいかい"
>>>   Else
>>>   Msg="ちがうよ"
>>>   End If
>>>   MsgBox Msg
>>>   TextBox1.SetFocus これで思ったようにできました。
>>>  
>    でも私の本で調べてもsetfocusの記述がなく意味がわかりません。
>     あと”せいかい”で”OK"ではなく
>     ”せいかい” ”つづける?” はい いいえ というメッセージ
>     をだしたいのですが可能でしょうか?メッセージボックスの記述を
>     試してみたのですができませんでした。よろしければご指導願います。


本だけでは、どうしても限界はありますよね。
調べるときは、ぜひネットで検索したり、
オブジェクトブラウザ(VBE画面でF2を押す)でも調べてください。
解説の文章がなかなか理解できないこともありますが、
たとえば、そのコマンドがあるのとないのではどう変わるのかとか、
いろいろ試してみるといいと思います。
また、ネット上にはいろいろな具体例も出ています。
その上でわからないことがあれば、
もっと具体的な質問ができて、理解度も上がるのではないでしょうか。

また、
>メッセージボックスの記述を試してみたのですができませんでした。
とのことですが、
できなかったコードもぜひ載せてください。
そうすれば、どこが間違えているのかを教えてもらえると思います。

ちょっとこのあと打ち合わせがあるので、
とりいそぎ、こんなアドバイスだけですみません。

【44796】Re:メッセージボックスについて
質問  田中  - 06/12/1(金) 15:59 -

引用なし
パスワード
   ▼   わさびさん お急ぎのところわざわざすいません。ありがとうございます。
>▼>>>>   Dim Msg As String
>>>>   If TextBox1.Text="あ"Then
>>>>   Msg="せいかい"
>>>>   Else
>>>>   Msg="ちがうよ"
>>>>   End If
>>>>   MsgBox Msg  これをMsgBox(”つづけますか?”,vbYesNo) Msg
               としてみたのですが
    TextBox1.SetFocus   
>>   
    時間があるときご指導願います。自分でもいろいろ試してみます。
    VBAって難しいけど思いどうりに動いたとき、とても楽しいですね。
    失礼します。

【44810】Re:メッセージボックスについて
発言  わさび  - 06/12/1(金) 18:08 -

引用なし
パスワード
   > MsgBox(”つづけますか?”,vbYesNo) Msg
この場合、しいて表記するとしたら、
>> MsgBox(Msg & "つづけますか?",vbYesNo)
となります。

「”」は全角ではなく、半角ですね。
"○○○"で、文字列を直接指示しています。
「&」は、文字列をつなげるときに使います。
つまり、変数で間接的に指示された文字列「Msg」と、
直接的に指示された「つづけますか?」をつなげています。

しかし、このまま入力すると、
--------------------
 コンパイル エラー :
 修正候補 :=
--------------------
というメッセージが出るかと思います。
そこで、以下のふたつの例を比べてみてください。

まず、下記に変更して試してみてください。
>> MsgBox Msg & "つづけますか?", vbYesNo
おそらく田中さんが希望されているメッセージボックスが表示されると思います。
しかし、これでは「はい」でも「いいえ」でも同じ処理、
すなわち、またユーザーフォームに戻って、
テキストボックスにフォーカスされた状態になります。

ちなみに、時間があればこれも試してみてください。
>> MsgBox Msg & Chr(13) & "つづけますか?", vbYesNo
おわかりいただけるかと思いますが、「Chr(13)」は改行です。

では、「はい」を押したときと「いいえ」を押したとき、
それぞれ処理を分けるにはどうしたらいいかというと、下の例になります。
>> Dim YScheck As Integer
>> YScheck = MsgBox(Msg & "つづけますか?", vbYesNo)
こうすると、下のように使えます。
---------------------------
  If YScheck = vbYes Then
    '(「はい」のときの処理)
  ElseIf YScheck = vbNo Then
    '(「いいえ」のときの処理)
  End If
---------------------------

だいぶくどくど書いてしまってすみません。
いろいろ工夫してみてください。

【44812】Re:メッセージボックスについて
回答  Kein  - 06/12/1(金) 18:48 -

引用なし
パスワード
   たぶん、こーいうことがしたいのでしょう。

Dim Msg As String
Dim Num As Integer, Ans As Integer

With TextBox1
  If .Text = "あ" Then
   Msg="せいかいです。続けますか": Num = 36
  Else
   Msg="ちがうよ !": Num = 48
  End If
  Ans = MsgBox(Msg, Num)
  If Num = 48 Then
   .SetFocus: .Text = ""
   Exit Sub
  Else
   If Ans = 7 Then Exit Sub
  End If
End With
'ここからメッセージボックスで「はい」を押したときの処理を書く

【44816】Re:メッセージボックスについて
お礼  田中  - 06/12/1(金) 21:52 -

引用なし
パスワード
   わさびさん 基本的な質問に丁寧な回答をいただきありがとうございました。
あと Chr(13)も使っていろいろ試してみます。本当にありがとうございました。
失礼します。

【44818】Re:メッセージボックスについて
お礼  田中  - 06/12/1(金) 22:06 -

引用なし
パスワード
   ありがとうございます。まだ使ったことのないコードですが
ためしてみます。

6509 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free