Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : その他)
Withの中で有効にならない
投稿日時: 20/05/06 08:45:03
投稿者: 鳳夕子

Excel365を使用しています。
 
UserForm1.Show vbModeless を .Show vbModeless でwithの中で実行出来ないのですが、
何か設定が変なのでしょうか?
 
Option Explicit
Private UF As UserForm
 
Private Sub 初期化()
 
    Set UF = UserForm1
    With UF
        .CheckBox1
        .Caption = ""
        .CheckBox2
        .Caption = ""
        .Label1.Caption = ""
        .Enabled = False
    End With
 
    UserForm1.Show vbModeless
     
End Sub

回答
投稿日時: 20/05/06 09:13:36
投稿者: WinArrow
投稿者のウェブサイトに移動

>実行出来ない
 
この意味がよくわからないのですが、
 
コードの意図が行くtか不明なところがあります。
 
> .CheckBox1
> .CheckBox2
は、何を目的としているのでしょうか?
 
もしかしたら
        .CheckBox1.Caption = ""
        .CheckBox2.Caption = ""
ではないでしょうか?
 
そうすると
> .Enabled = False
このコードは、何をしたいのでしょうか?
このままだと、USerform1そのものが無効になっているため、
全てのコントロールが操作不能になってしまいます。

回答
投稿日時: 20/05/06 09:19:08
投稿者: WinArrow
投稿者のウェブサイトに移動

訂正
 
 
>実行出来ない
  
この意味がよくわからないのですが、
  
コードの意図がいくつか不明なところがあります。
  
 > .CheckBox1
 > .CheckBox2
は、何を目的としているのでしょうか?
  
もしかしたら
        .CheckBox1.Caption = ""
         .CheckBox2.Caption = ""
ではないでしょうか?
  
そうすると
> .Enabled = False
このコードは、何をしたいのでしょうか?
このままだと、USerform1そのものが無効になっているため、
 全てのコントロールが操作不能になってしまいます。
 
 
素朴な疑問
変数:UFの意図は?
 
あえて変数を使わなくても
    With Userform1
 
という記述でもよいでしょう・・・
  
 
 

回答
投稿日時: 20/05/06 09:34:19
投稿者: WinArrow
投稿者のウェブサイトに移動

>実行できない
の意味が分かりました。
 
Showメソッドが変数を使うと実行時エラー(438)になるということですね?
Useformオブジェクトには、Showメソッドは存在しないということでしょう。
 
Private UF As Userform

Private UF As Userform1
とすれば、エラーにはなりません。
 
でも、変数にする必要がないと思います。

投稿日時: 20/05/06 09:36:37
投稿者: 鳳夕子

返信ありがとうございます。
 
Option Explicit
Private UF As UserForm
 
メインプロシージャで宣言しております
Set UF = UserForm1
 
 
コーディングミスのようです、貴方のおっしゃる通りですね
 
もしかしたら
        .CheckBox1.Caption = ""
        .CheckBox2.Caption = ""
ではないでしょうか?

投稿日時: 20/05/06 09:40:28
投稿者: 鳳夕子

貴重な情報をありがとうございます。
 
Private UF As Userform

Private UF As Userform1
とすれば、エラーにはなりません。
 
クラスモジュールと同じ理屈で指定すれば、問題なかったのですね。
勉強になりました。
ありがとうございました。