[[20230413234650]] 『ユーザーフォーム内のテキストボックス内の数値が』(えぬ) ページの最後に飛ぶ

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

 

『ユーザーフォーム内のテキストボックス内の数値が残る』(えぬ)

ユーザーフォームを作成し、
Private Sub UserForm_Initialize()

    ' セルAP3の値をテキストボックスtxLINEに転記する
    txLINE.Text = Worksheets("Sheet1").Range("AP3").Value

txLINEテキストボックスの値をAP3セルに転記

    Worksheets("Sheet1").Range("AP3").Value = Me.txLINE.Value

とユーザーフォーム内にテキストボックスとセルの間で転記するようにしていて

別マクロで

 ' シート1の指定範囲の内容を消去(A14は除く)
    With Worksheets("Sheet1")
    Union(.Range("AP3:BH3"), .Range("BJ3:BP3")).ClearContents
と、セル内の内容を消去した後、
再びユーザーフォームを開くと前に入力した数値がユーザーフォーム内にのこってしまっています。なにもせずユーザーフォームを閉じて、また開くと消えているのですが、最初から消えるようにする方法はあるでしょうか

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


転記後に転記元の値を消すコードを書かず、ユーザーフォームをunloadもしていないなら
テキストボックスの値が消えてしまう方が異常というもの
(ドロンします) 2023/04/14(金) 00:35:53

ユーザーフォームの名前が UserForm1 として

    Union(.Range("AP3:BH3"), .Range("BJ3:BP3")).ClearContents

の後に下記を挿入したらどうでしょう。

    UserForm1.txLINE.Text = ""
(hatena) 2023/04/14(金) 04:40:56

>最初から消えるようにする方法はあるでしょうか
txLINE.Text = Worksheets("Sheet1").Range("AP3").Valueは
どういう意味で Private Sub UserForm_Initialize 内に記述しているのですか。

(qwe) 2023/04/14(金) 09:04:46


■1
>再びユーザーフォームを開くと〜
↑がどういう動作を示しているのか不明ですが、皆さんが指摘されているように「UserForm_Initialize」は、ユーザーフォームを読み込む(load)するときにしか実行されないですよね。
なので、unloadせずに一時的に非表示したものを再表示したり、シートに隠れて見えなくなっていたものを再度見たりしただけであれば、当然↓は実行されないはずです。
 txLINE.Text = Worksheets("Sheet1").Range("AP3").Value

■2
上記を踏まえてリアルタイムでセルの値を反映させたいのだということならば、Initializeで対処するんじゃなく設計段階でテキストボックスの「ControlSource」に「Sheet1!AP3」を設定すればよいのではないでしょうか?

 【参考】
https://tripbowl.com/excel-vba/textbox_cell-datelink/

 ※↑の方法だとテキストボックスの内容がSheet1のAP3セルに反映されるようにもなりますから、
  それではマズイということならば既に指摘があるように、"別マクロ"側でユーザーフォームの
  テキストボックスの値を更新するとよいと思います。

(もこな2) 2023/04/14(金) 12:53:03


hatenaさんのやり方でやってみたらできました。ありがとうございます!
(えぬ) 2023/04/15(土) 11:21:52

コメント返信:

[ 一覧(最新更新順) ]


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