簡體   English   中英

根據單選按鈕選擇組合(VBA Excel)用可變文本填充文本框

[英]Fill a textbox with varaible text depending on Radio Button selection combo (VBA Excel)

我需要一些幫助來獲取正確的代碼來執行以下操作:

  • 我在用戶表單的框架內有 4 組單選按鈕
  • 每個組都是一個簡單的是/否單選按鈕
  • 我有一個文本框,我想根據所選的“是”單選按鈕的數量自動填充 AD 的分數范圍。
  • “否”復選框真的不應該對文本框做任何事情

    • 用戶表單名稱 = TP_UF
    • 框架名稱 = fun_opt_frame
    • “是”的選項按鈕名稱 = fun_score_yes1-4
    • 文本框名稱 = fun_scorebox

邏輯:

  • 4 是 = A
  • 3 是 = B
  • 2 是 = C
  • 1 是 = D

選擇 yesses 的順序無關緊要,它是一個總數。 我嘗試使用框架使用代碼,但不確定這是否是最好的方法。 不需要這些單選按鈕的框架,除了可能使編碼更容易之外的任何原因。 所以如果沒有必要讓這個工作,我可以扔掉框架。

我不知道從哪里開始。 任何幫助,將不勝感激。

圖片

您理解的最快和最簡單的方法是 - 我猜 - 以下代碼。 您必須將代碼放入用戶窗體的類模塊中。

Option Explicit

Dim opt1 As Byte
Dim opt2 As Byte
Dim opt3 As Byte
Dim opt4 As Byte

Private Sub opt1Yes_Click()
    opt1 = 1
    EvalOpt
End Sub
Private Sub opt1No_Click()
    opt1 = 0
    EvalOpt
End Sub
Private Sub opt2yes_Click()
    opt2 = 1
    EvalOpt
End Sub
Private Sub opt2No_Click()
    opt2 = 0
    EvalOpt
End Sub
Private Sub opt3yes_Click()
    opt3 = 1
    EvalOpt
End Sub
Private Sub opt3No_Click()
    opt3 = 0
    EvalOpt
End Sub
Private Sub opt4yes_Click()
    opt4 = 1
    EvalOpt
End Sub
Private Sub opt4No_Click()
    opt4 = 0
    EvalOpt
End Sub

Private Sub EvalOpt()
Dim sumOpt As Byte
Dim res As String
    sumOpt = opt1 + opt2 + opt3 + opt4
    Select Case sumOpt
    Case 1: res = "D"
    Case 2: res = "C"
    Case 3: res = "B"
    Case 4: res = "A"
    Case Else: res = ""
    End Select
    Me.fun_scorebox.text = res
End Sub

我假設選項按鈕被命名為 opt1Yes、opt1No、opt2Yes、opt2No 等。更高級的解決方案可能是使用 classe 模塊並以這種方式“收集”選項按鈕。

我最終以不同的方式解決這個問題,並使用計數器使其工作。 謝謝您的幫助! 在這里發布代碼以防其他人需要它。

    Option Explicit

    Private Sub OptionButton1_Change()
    set_counter
    End Sub

    Private Sub OptionButton2_Change()
    set_counter
    End Sub

    Private Sub OptionButton3_Change()
    set_counter
    End Sub

    Private Sub OptionButton4_Change()
    set_counter
    End Sub

    Private Sub OptionButton5_Change()
    set_counter
    End Sub

   Private Sub OptionButton6_Change()
   set_counter
   End Sub

   Private Sub OptionButton7_Change()
   set_counter
   End Sub

   Private Sub OptionButton8_Change()
   set_counter
   End Sub

   Private Sub set_counter()
    Dim x As Integer, counter As Integer
     Me.TextBox1.Value = ""
     counter = 0
     For x = 1 To 8 Step 2
       If Me.Controls("OptionButton" & x).Value = True Then counter = counter + 1
     Next x
        Me.TextBox1.Value = Choose(counter, "D", "C", "B", "A")
   End Sub

  Private Sub UserForm_Activate()
    Me.TextBox1.Value = ""
  End Sub

  Private Sub UserForm_Click()
    Dim x As Integer
      Me.TextBox1.Value = ""
      For x = 1 To 8
         Me.Controls("OptionButton" & x).Value = False
      Next x
  End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM