Excel (VBA)

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

 
(Windows 7 Home Premium : Excel 2010)
ユーザーフォームのテキストボックスの背景色が変わらない。
投稿日時: 19/04/04 19:08:05
投稿者: mattuwan44

いつもすみません。
 
ユーザーフォーム上に、
OptionButton1
OptionButton2
TextBox1
CommandButton1
と、4つのコントロールを配置しています。
 
OptionButton1がTureの時はテキストボックスを使用不可にし、
OptionButton2の値がTrueの時は、テキストボックスを使用可に制御したいと考えて、
以下のコードを書きました。
 

Option Explicit
Private Sub UserForm_Initialize()
    初期化
End Sub


Private Sub OptionButton2_Change()
    With Me.TextBox1
        .Enabled = True
        .Locked = False
        .BackColor = vbWhite
    End With
End Sub

Private Sub CommandButton1_Click()
    With ActiveSheet.Range("A1").CurrentRegion
        .Cells(.Rows.Count + 1, 1).Value = GetOPButtonValue
    End With
    
    初期化
End Sub

Private Function GetOPButtonValue() As String
    Dim C As MSForms.Control
    Dim s As String
        
    For Each C In Me.Controls
        If TypeName(C) = "OptionButton" Then
            If C.Value = True Then
                If C.Object.Caption = "その他" Then
                    s = Me.TextBox1.Text
                Else
                    s = C.Object.Caption
                End If
                Exit For
            End If
            
        End If
    Next
    
    GetOPButtonValue = s
End Function


Private Sub 初期化()
    With Me.TextBox1
        .BackColor = &HC0C0C0
        .Text = ""
        .Enabled = False
        .Locked = True
    End With
    Me.OptionButton1.Value = False
    Me.OptionButton2.Value = False
    
End Sub

 
コマンドボタンを押したときに初期状態に戻って欲しいのですが、
色が変わってくれません。
こういう時にはどうしたら、色が変わってくれるのでしょうか?

回答
投稿日時: 19/04/04 20:39:27
投稿者: simple

OptionButton2.Valueが Trueの時にコマンドボタンを押していませんか?
 
その時にコマンドボタンを押すと、
OptionButton2.Value=Falseが実行され、
これに伴って
OptionButton2_Changeが動き、
TextBox1.BackColor = vbWhite
となるからじゃないかと。

投稿日時: 19/04/04 20:54:16
投稿者: mattuwan44

うっ orz
 
なるほど。。。^^;
 
久々、ユーザーフォームをいじって、
勘が鈍ってますね^^;
 
ステップ実行で追ってみます^^;
 
ありがとうございました。