Excel VBA質問箱 IV

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

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


11395 / 13646 ツリー ←次へ | 前へ→

【16328】リストボックスのX印で閉じたことを知るには Kobasan 04/7/25(日) 15:10 質問[未読]
【16331】Re:リストボックスのX印で閉じたことを知... IROC 04/7/25(日) 15:33 回答[未読]
【16336】Re:リストボックスのX印で閉じたことを知... Kobasan 04/7/25(日) 16:06 質問[未読]
【16339】Re:リストボックスのX印で閉じたことを知... IROC 04/7/25(日) 17:01 回答[未読]
【16340】Re:リストボックスのX印で閉じたことを知... Kobasan 04/7/25(日) 18:42 お礼[未読]
【16343】Re:リストボックスのX印で閉じたことを知... IROC 04/7/25(日) 18:59 回答[未読]
【16346】Re:リストボックスのX印で閉じたことを知... Kobasan 04/7/25(日) 20:10 お礼[未読]
【16348】Re:リストボックスのX印で閉じたことを知... IROC 04/7/25(日) 21:22 回答[未読]
【16358】Re:リストボックスのX印で閉じたことを知... Kobasan 04/7/26(月) 8:17 お礼[未読]

【16328】リストボックスのX印で閉じたことを知る...
質問  Kobasan  - 04/7/25(日) 15:10 -

引用なし
パスワード
   リストボックスの空白値を選んだときと、リストボックスのX印で閉じた時の違いを区別するために、X印で閉じたことを知る方法を教えて下さい。

【16331】Re:リストボックスのX印で閉じたことを...
回答  IROC  - 04/7/25(日) 15:33 -

引用なし
パスワード
   >リストボックスのX印で閉じた時

これは、どのようなことでしょうか?

【16336】Re:リストボックスのX印で閉じたことを...
質問  Kobasan  - 04/7/25(日) 16:06 -

引用なし
パスワード
   >>リストボックスのX印で閉じた時
>
>これは、どのようなことでしょうか?

ユーザーフォーム Form入力をX印で閉じた時

  '-------------------------------データ入力
  Form入力.Caption = "データ入力"
  Form入力.ListBox1.RowSource = "CODE表!B3:B34"
  Form入力.Show
  data = Form入力.ListBox1.Value
  Unload Form入力 'ユーザーフォームをメモリから削除
  '-----------------------
  Cells(行, 列) = data

Cells(行, 列) = dataのところを
if Form入力をX印で閉じた時以外 then Cells(行, 列) = data
としたい。
Form入力をX印で閉じた時のコードがありますか?

【16339】Re:リストボックスのX印で閉じたことを...
回答  IROC  - 04/7/25(日) 17:01 -

引用なし
パスワード
   リストボックスではなく、ユーザーフォームの間違いということですか?


Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
  MsgBox "Xボタンです"
Else
  MsgBox "Xボタン以外です"
End If

End Sub

【16340】Re:リストボックスのX印で閉じたことを...
お礼  Kobasan  - 04/7/25(日) 18:42 -

引用なし
パスワード
   IROCさんへ  早々に解答有り難うございました。
  リストボックスではなく、ユーザーフォームでした。
何とか動作しましたが、新しい疑問も出ました。

Unload Form入力 の位置でうまく動作したりしなかったりするのはなぜですか。
どちらでも動作しそうなのですが。

ユーザーフォーム Form入力に下記コードを書き
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  FLAG = CloseMode
  'CloseMode = 0  MsgBox "Xボタンです"
  'CloseMode = 1  MsgBox "Xボタン以外です"
End Sub


Module1に下記コードを書き
  Public FLAG As Variant

sheet1に下記コードを書きましたが
  '----------------"データ入力"
  Form入力.Show
  data = Form入力.ListBox1.Value
  Unload Form入力
  '------------------------------------
  If FLAG = 1 Then Cells(行, 列) = data
ではうまく動作しません。

  '----------------"データ入力"
  Form入力.Show
  data = Form入力.ListBox1.Value
  '------------------------------------
  If FLAG = 1 Then Cells(行, 列) = data
  Unload Form入力
ではうまく動作します。
不思議????です。

【16343】Re:リストボックスのX印で閉じたことを...
回答  IROC  - 04/7/25(日) 18:59 -

引用なし
パスワード
   >sheet1に下記コードを書きましたが
>  '----------------"データ入力"
>  Form入力.Show
>  data = Form入力.ListBox1.Value
>  Unload Form入力

コードが断片的で理解できないですが、
変数dataの宣言はどうしていますか?

>  data = Form入力.ListBox1.Value
は、ユーザーフォームモジュールで処理するコードではないのでしょうか?
Form入力.Showした時点で、ユーザーフォームモジュールに処理が移動し、
ユーザーフォームを閉じた後に、
>  data = Form入力.ListBox1.Value
が実行されますが、すでに手作業でUFは閉じられていますよね?
そのあとに、  Unload Form入力 しているのもよく分かりません。


ユーザーフォームとそれ以外のプロシージャのコードの実行順序は
把握されていますか?

【16346】Re:リストボックスのX印で閉じたことを...
お礼  Kobasan  - 04/7/25(日) 20:10 -

引用なし
パスワード
   新たな疑問にもお付き合い下さり有り難うございます。

1.変数dataの宣言はどうしていますか?

2.data = Form入力.ListBox1.Value
は、ユーザーフォームモジュールで処理するコードではないのでしょうか?
Form入力.Showした時点で、ユーザーフォームモジュールに処理が移動し、
ユーザーフォームを閉じた後に、
data = Form入力.ListBox1.Value
が実行されますが、すでに手作業でUFは閉じられていますよね?
そのあとに、  Unload Form入力 しているのもよく分かりません。

3.ユーザーフォームとそれ以外のプロシージャのコードの実行順序は
把握されていますか?
----------------------------------------------
1.について、dataは今のところ変数の宣言はしていません。問題ないと思います。

2.について、当初はForm入力の中にcells(行,列)= Form入力.ListBox1.Valueを入れていましたが、Form入力の中でListBox1.Valueをセル代入したくないのです。
セルに代入する前にListBox1.Valueと同じ値がシート上にあるかを点検しているためです。
それと、sheet1に値が変化したときに働くイベントブロージャPrivate Sub Worksheet_Change(ByVal Target As Range)があるため、これが動き出す前に点検したいのです。

Unload Form入力はForm入力をリセットするためです。
そうしないと別のセルで前回と同じ値が入力できないからです。
  Unload Form入力 'Form入力をリセット
  Form入力.Show
でも動作します。この方がいいかなと思っています。

なぜFLAGに代入したのに、Unload Form入力を
 If FLAG = 1 Then Cells(行, 列) = data
の後にしなければいけないのか。

3.について、ユーザーフォームとそれ以外のプロシージャのコードの実行順序は、今のところ2.の関係で変更なしでやることにしています。

当初の問題は解決しましたので助かっています。

【16348】Re:リストボックスのX印で閉じたことを...
回答  IROC  - 04/7/25(日) 21:22 -

引用なし
パスワード
   ブレイクポイントを設定し、F8キーステップ実行しながら
ローカルウィンドウで変数の値を確認してみては如何でしょうか?

【16358】Re:リストボックスのX印で閉じたことを...
お礼  Kobasan  - 04/7/26(月) 8:17 -

引用なし
パスワード
   ▼IROC さん:
>ブレイクポイントを設定し、F8キーステップ実行しながら
>ローカルウィンドウで変数の値を確認してみては如何でしょうか?

IROC さん、有り難うございました。
コードを点検した結果、ユーザーフォーム等を修正し、すっきりしました。

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