2014-10-06 48 views
0

我在用戶窗體上有兩個選項按鈕。如果您選擇其中一個,則會灰顯並禁用某些輸入框。如果您選擇其他輸入框,則會限制其他輸入框並且效果很好。所以我有適當的代碼執行我想要的。但是,如果用戶犯了一個錯誤,並單擊一個選項,然後嘗試更改其選擇,則代碼已經執行並禁用了這些輸入。我如何讓代碼來回切換?這是我的代碼,非常感謝您的幫助!使用選項切換兩組代碼

Sub Yes_Click() 
If Yes.Value = True Then 
    With Me.IncrementalImpactPricingInput1 
    .Enabled = False 
    .BackColor = RGB(128, 128, 128) 
    End With 

    With Me.IncrementalImpactFundingInput1 
    .Enabled = False 
    .BackColor = RGB(128, 128, 128) 

    Me.BilledAmountInput1.Enabled = True 

    End With 
Else: Call No_Click 

End If 
End Sub 

Sub No_Click() 
If No.Value = True Then 
    With Me.BilledAmountInput1 
    .Enabled = False 
    .BackColor = RGB(128, 128, 128) 
    End With 

Else: Call Yes_Click 
    'With Me.IncrementalImpactPricingInput1 
    '.Enabled = True 
    '.BackColor = RGB(255, 255, 255) 
    'End With 

    'With Me.IncrementalImpactFundingInput1 
    '.Enabled = True 
    '.BackColor = RGB(255, 255, 255) 
    'End With 
End If 
End Sub 

回答

0

您正在使用兩個選項按鈕,彷彿它們是兩個「回合」複選框,迫使你添加代碼,讓他們相互同步。 相反,它們應包含在一個選項組中,該選項組將自動處理切換。在選項組,指定的1和2的選項按鈕的數據值,然後更換兩個點擊事件處理程序有:

Sub frameYesNo_AfterUpdate() 
Select Case frameYesNo 
    Case 1: ' "yes" stuff here 
    Case 2: ' "no" stuff here 
End Select 
End Sub 
0

試試這個:(不知道這是否是你想要的)

「單一的點擊鎖定

Private Sub No_Click() 
With Me.BilledAmountInput1 
.Enabled = False 
.BackColor = RGB(128, 128, 128) 
End With 
End Sub 

'雙擊解鎖

Private Sub No_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 
With Me.BilledAmountInput1 
.Enabled = True 
.BackColor = RGB(255, 255, 255) 
End With 
No.Value = False 
End Sub 

' 一次點擊鎖定

Private Sub Yes_Click() 
With Me.IncrementalImpactPricingInput1 
.Enabled = False 
.BackColor = RGB(128, 128, 128) 
End With 

With Me.IncrementalImpactFundingInput1 
.Enabled = False 
.BackColor = RGB(128, 128, 128) 
End With 
End Sub 

「雙擊解鎖

Private Sub Yes_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 
With Me.IncrementalImpactPricingInput1 
.Enabled = True 
.BackColor = RGB(255, 255, 255) 
End With 

With Me.IncrementalImpactFundingInput1 
.Enabled = True 
.BackColor = RGB(255, 255, 255) 
End With 
Yes.Value = False 
End Sub