三流君 ken3のmemo置き場

メモ置き場、保管庫として利用。まとまっていませんがヨロシク

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
(※詳細は[三流君 三流プログラマーとは?]を見てください)


広告:


XXXXXさんへ Excel VBA セルに書き込み時にLISTBOXのChangeイベントが発生について

朝からデバッグ Excel リストボックスのイベントについて実験したみた。

朝からデバッグ VBA Excel UserForm リストボックスのイベントについて実験する・・・三流プログラマー の 独り言 ライブ プログラミングほか テスト中 - YouTube
www.youtube.com

1.質問の理解

ユーザフォーム(テキストBOX)からセルに書き込みを行う際、listboxのChangeイベントが発 生しうまく値を書き換えることができません。

(値の変更をフォームより行いたいのですが、セルに書き込み時
にLISTBOXのChangeイベントが発生してうまくいかないです。)

セルに書き込み時Changeイベントを発生させないようにするにはどうすればいいのでしょうか ?
セル書き込み時にLISTボックスCHANGEイベントがなぜ発生するのでしょうか?

宜しくお願いいたします。

userform1のなかにTEXTBOX1~3・変更ボタン・listbox1が配置されてます。

textbox1  セルA列
textbox2  セルB列
textbox3  セルC列

変更ボタン (A列 B列 C列に書かれているデータを変更する)

ユーザフォームの一番したにLISTBOX1が配置されてます。

LISTBOX1のBoundcolumn、Textcolumnの値はともに1です。

-----------------------------------------

Private Sub CommandButton1_Click() '変更ボタン

With ListBox1
t = .ListIndex
Cells(t + 3, 1) = TextBox1.Text '実行後LISTBOX1Changeイベントが発生
Cells(t + 3, 2) = TextBox2.Text '実行後LISTBOX1Changeイベントが発生
Cells(t + 3, 3) = TextBox3.Text '実行後LISTBOX1Changeイベントが発生

End With

End Sub
-----------------------------------------
Private Sub ListBox1_Change() ’リストボックス内を矢印キーで動かすと値が各テキスト ボックスに表示される。

With ListBox1  
TargetRow = .ListIndex
TextBox1.Text = .List(TargetRow, 1) 
TextBox2.Text = .List(TargetRow, 2)
TextBox3.Text = .List(TargetRow, 3)
End With

End Sub
-----------------------------------------
Private Sub UserForm_Initialize()
With ListBox1
ro = 0
ro = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
.ColumnCount = 5
.ColumnHeads = True
.ColumnWidths = -1
.RowSource = ActiveSheet.Range("A2" & ":o" & ro).Address(external:=True)
.TopIndex = ro
End With
End Sub

2.回答作成

問題が発生したら、同じような事例が無いか検索してみます
検索結果から、それらしいのをみつけたら、
そのキーワードやURLを質問者に教えたり。


3.回答後、気になったので、現場再現してみた
今日の本題は、ここです。

道を聞かれた時、あなたなら?どうしますか?
ア.ここ直進して左側に交番やコンビニあるので他の人に聞いてください
イ.まっすぐ行って目印を探して、右に行くとわかると思います。とだいだいの目標を教える
ウ.親切に一緒に行きましょうといって一緒に行く、可能なら荷物を持ってあげるぉぃぉぃ
エ.わからないんで、タクシー呼んだ方が早いですよ

まぁ、知っている道、知らない道でイロイロとあるとは思いますが。

3.1 てきとうに検索結果を紹介して、不親切だったので少し罪悪感

あの道で(あの回答で)
目的地に付けたのか、少し不安だったので、
実際に自分でも歩いてみようと思います。

3.2 現場を再現
周辺地図、じゃなかった、現場を再現してみる。

3.3 実際に自分で歩いてみる
実際に自分で歩いてみて、道に迷ってみる

3.4 ナビゲート案内が正しいか、確認してみた


4.終わりの挨拶
朝起きたら気になったので、デバッグしてみました

道に迷って、ほかの人に聞いて再チャレンジにならないことを願いつつ、
ライブ配信開始する
朝からデバッグ VBA Excel UserForm リストボックスのイベントについて実験する・・・三流プログラマー の 独り言 ライブ プログラミングほか テスト中 - YouTube
www.youtube.com

テストで作成したコード

Option Explicit

Private flg_BUTTON As Integer  '自分でイベント管理 モジュール内共通変数

Private Sub CommandButton1_Click() '変更ボタン

    Dim t As Integer

    flg_BUTTON = 1  'ボタン内の処理なので1

    With ListBox1
        t = .ListIndex
        Cells(t + 3, 1) = TextBox1.Text '実行後LISTBOX1Changeイベントが発生
        Cells(t + 3, 2) = TextBox2.Text '実行後LISTBOX1Changeイベントが発生
        Cells(t + 3, 3) = TextBox3.Text '実行後LISTBOX1Changeイベントが発生
    
    End With

    flg_BUTTON = 0  '出る前に0にする フラグクリア

End Sub


Private Sub ListBox1_Change()  'リストボックス内を矢印キーで動かすと値が各テキスト ボックスに表示される。

    Dim TargetRow As Integer

    If flg_BUTTON = 1 Then Exit Sub  'ボタンが押された時の_Changeなら何もしないで抜ける


    With ListBox1
        TargetRow = .ListIndex
        TextBox1.Text = .List(TargetRow, 1)
        TextBox2.Text = .List(TargetRow, 2)
        TextBox3.Text = .List(TargetRow, 3)
    End With

End Sub


Private Sub UserForm_Initialize()

    Dim ro As Long

    With ListBox1
        ro = 0
        ro = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
        .ColumnCount = 5
        .ColumnHeads = True
        .ColumnWidths = -1
        .RowSource = ActiveSheet.Range("A2" & ":o" & ro).Address(external:=True)
        .TopIndex = ro
    End With
    
    flg_BUTTON = 0  'フォーム初期化時も0にする フラグクリア
    
End Sub


解決のヒントとなれば幸いです。 三流プログラマー Ken3
※遠回り、回り道させてしまったらスミマセン。 

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。
・[Excel/Access VBA]の解説
・[ASP(Active Server Pages)]の解説。
・[元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
・[プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
三流君を踏み台にする
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。

三流解説動画の再生リスト
https://www.youtube.com/user/ken3video/playlists

本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)