1

スプレッドシート内の特定のセルが特定の数値に等しい場合、userForm 内のボタンを無効にする方法を見つけようとしています。以下のコードを試してみましたが、うまくいきません。

Private Sub UserForm_Initialize()
Label2 = Sheets("DATA").Range("AM2").Value
Label4 = Sheets("DATA").Range("AO2").Value
Label7 = Format(Sheets("DATA").Range("R8").Value, "Currency")

If Sheets("DATA").Range("AL10").Value = 10 Then
ActiveSheet.Shapes("CommandButton1").Select
UserFormact_Upgrade.CommandButton1.Enabled = False

Else


End If

End Sub
4

3 に答える 3

6

正しい道を進んでいるので、コードは機能しているはずです。

テストするには、新しいフォームを作成してこのコードを追加するだけで、動作することがわかります。IF 句内で問題が発生している可能性がありますか?

さらに、無効にする前に形状を選択する必要はありません。すぐに無効にしてください。

Private Sub UserForm_Initialize()

    CommandButton1.Enabled = False

End Sub
于 2011-04-05T18:30:53.170 に答える
1

これが古いことは知っていますが、私の問題を解決しようとしてこのスレッドにたどり着き、ここで言及されていない解決策を見つけました。だから誰かが私のようにここに来て、これが彼らが必要な場所に行かなかった場合、これが役立つかもしれないと思った.

cmdADAMFields というドロップダウン ボックスのあるユーザー フォームがあり、ドロップダウン ボックスから何かを選択するまで、FieldsSubmitButton という送信ボタンを有効にしたくありませんでした。

私は自分の議論を 2 つの異なるプライベート サブルーチンと 1 つの大きな If-Then-Else ステートメントに分割する必要がありました。

まず、私は入れます:

Private Sub UserForm_Activate()
If cmbADAMFields.ListIndex = -1 Then FieldsSubmitButton.Enabled = False
End Sub

次に、値が変更されたときのプルダウンのプライベートサブの場合、次のように書きました。

Private Sub cmbADAMFields_Change()
FieldsSubmitButton.Enabled = True
End Sub
于 2016-09-23T20:21:05.923 に答える
0

Enabledプロパティを設定する適切な場所 は、 Activateイベント( Showメソッドに関連付けられている)であり、 Initializeイベント( Load命令に関連付けられている)ではありません。以下のコードは、AL10セル> = 10の場合、ボタンCommandButton1を無効にします。

        Private Sub UserForm_Activate()
           CommandButton1.Enabled = ( Sheets("DATA").Range("AL10") < 10 )
        End Sub

ボタンの場合、通常のボタン(property Enabled =FalseおよびpropertyVisible = true)、無効化されたボタン(property Enabled =FalseおよびpropertyVisible = true)、および非表示のボタン(property Enabled =FalseおよびpropertyVisible = False)から選択できます。ほとんどの場合、よりクリーンなインターフェイスです。

テキストボックスに関しては、通常無効表示のステータスの他に、有効で表示されているがユーザーが編集できないロックされたステータスがあります。(プロパティロック= True)

ロックされたコントロールは、VBAコードによってのみ変更できます。たとえば、誰かが日付テキストボックスを含めることができます。これは、カレンダーコントロールを備えたセカンダリポップアップ日付フォームを使用して入力されます。

于 2012-11-15T18:04:46.097 に答える