エクセルを立ち上げた時に取得した変数を、エクセルを立ち上げた後に比較して処理を変化させたいと考えております。
しかし、値が空になってしまい、うまく実現できません。どのように対処したらよいのでしょうか。
よろしくお願いいたします。
できたこと
Dim before As String Private Sub Workbook_Open() Sheets(1).Fromテキスト = Format(Date, "yyyymmdd") Sheets(1).TextBox1 = "A社" Sheets(1).TextBox3 = "東京都新宿区" Sheets(1).TextBox4 = "テストタロウ" 'コンボボックスに項目を追加 Sheets(1).ComboBox1.AddItem "0" Sheets(1).ComboBox1.AddItem "1" Sheets(1).ComboBox1.AddItem "2" '初期値を指定 Sheets(1).ComboBox1.ListIndex = 0 before = Sheets(1).TextBox1 & Sheets(1).TextBox3 & Sheets(1).TextBox4 & Sheets(1).ComboBox1 End Sub
Private Sub CommandButton1_Click() Dim after As String Dim 結果 As String after = Sheets(1).TextBox1 & Sheets(1).TextBox3 & Sheets(1).TextBox4 & Sheets(1).ComboBox1 If before <> after Then 結果 = MsgBox("値が変更されていますがよろしいですか?", vbYesNo) End If End Sub
Excel画面
変数befroeがこのままだと空になります。beforeにブックを立ち上げた時に格納した値(Sheets(1).TextBox1 & Sheets(1).TextBox3 & Sheets(1).TextBox4 & Sheets(1).ComboBox1)を保持し、「実行!」ボタンを押下したときに変数afterと比較をするためにはどのようにしたらよいのでしょうか。
どうぞよろしくお願いいたします。
追記
自分が実現したいことについて、下記のようなソースコードを書いてみたところうまくいきました。
ただ、もっと賢いやり方があるような気がしてなりません。。。。
Private Sub Workbook_Open() Sheets(1).Fromテキスト = Format(Date, "yyyymmdd") Sheets(1).TextBox1 = "A社" Sheets(1).TextBox3 = "東京都新宿区" Sheets(1).TextBox4 = "テストタロウ" 'コンボボックスに項目を追加 Sheets(1).ComboBox1.AddItem "0" Sheets(1).ComboBox1.AddItem "1" Sheets(1).ComboBox1.AddItem "2" '初期値を指定 Sheets(1).ComboBox1.ListIndex = 0 Range("A10000").Value = Sheets(1).TextBox1 & Sheets(1).TextBox3 & Sheets(1).TextBox4 & Sheets(1).ComboBox1 If A10000 <> "" Then Range("A10000").Hidden = True End Sub
Private Sub CommandButton1_Click() Dim after As String Dim 結果 As String after = Sheets(1).TextBox1 & Sheets(1).TextBox3 & Sheets(1).TextBox4 & Sheets(1).ComboBox1 If Range("A10000").Value <> after Then 結果 = MsgBox("値が変更されていますがよろしいですか?", vbYesNo) End If End Sub
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/20 05:05
2021/06/20 05:12
2021/06/20 05:14