[[20220823103531]] 『ユーザーフォームのリアルタイム更新』(1026) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ユーザーフォームのリアルタイム更新』(1026)

ユーザーフォームをモードレスで表示した状態で
セルの内容を更新した時にユーザーフォーム上の
内容も同じく更新することは出来ますか?

Private Sub UserForm_Initialize()

TextBox1 = WorksheetFunction.CountIf(Sheets("Sheet1").Range("A1:A5"), "〇")

TextBox1 = Format(TextBox1.Value, "###個")

上のマクロは、Sheet1のA1〜A5のセルの〇の個数を数えて
モードレス表示されているUserForm上のTextBox1に個数表示される
様な内容ですが、ユーザーフォームが開く直前に個数を数えて表示される
ため、モードレス表示中にセルの〇の数を変更してもUseFormのTextBoxの
個数は更新されません。
セルの〇の数を変更するとモードレス表示中のTextBoxの表示数も連動して
更新することはできますでしょうか?宜しくお願い致します。

End Sub

< 使用 Excel:Office365、使用 OS:Windows10 >


 Sheet1のシートモジュールに
 Private Sub Worksheet_Change(ByVal Target As Range)
    If Application.Intersect(Target, Range("A1:A5")) Is Nothing Then Exit Sub
    UserForm1.TextBox1 = Format(WorksheetFunction.CountIf(Sheets("Sheet1").Range("A1:A5"), "〇"), "###個")
 End Sub
 とするのはどうだろうか?
 UserForm1.TextBox1部分は実際のユーザーフォーム名およびテキストボックス名に合わせてくれ。
(ねむねむ) 2022/08/23(火) 11:08

 かぶりました
 できなくはないです

 ''----------UserForm1モジュール--------
 Private WithEvents ws As Worksheet
 Private Sub UserForm_Initialize()
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    Me.TextBox1.Text = Format(WorksheetFunction.CountIf(ws.Range("A1:A5"), "○"), "#個")
 End Sub
 Private Sub ws_Change(ByVal Target As Range)
    Me.TextBox1.Text = Format(WorksheetFunction.CountIf(ws.Range("A1:A5"), "○"), "#個")
 End Sub
 ''----------標準モジュール--------
 Sub sample()
   UserForm1.Show vbModeless
 End Sub
(´・ω・`) 2022/08/23(火) 11:13

返信ありがとうございます。
お二方両方を試してみましたがどちらもやりたいように表示できました。
ありがとうございました。特にIntersectは試したことのない方法だったので
もっと自分で勉強してみます。
(1026) 2022/08/23(火) 12:42

CountIf(Sheets("Sheet1").Range("A1:A5"), "〇")
これらをどこかのセルに書いておきそのセルと
ControlSource
でむすめば楽だと思いますが。
リアルタイムですよね。
(5051) 2022/08/23(火) 13:08

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.