Chechbox动态将值插入特定单元格

时间:2018-08-17 06:07:11

标签: vba excel-vba checkbox userform

我发现以下代码可用于从Excel用户窗体中的复选框插入值:

Dim rw As Integer
Dim ws As Worksheet 
Set ws = Worksheets("Sheet1")
If Checkbox1.Value = True Then
ws.Cells(rw, 2).Value = "X" 
Else
ws.Cells(rw, 2).Value = "" 
End If 

效果很好!但是现在我需要在另一个用户表单中使用它,在该表单中我从ComboBox查找值,在该表单中,连接到ComboBox中特定编号的信息将显示在用户表单中。用户可以将新信息保存到该特定号码,在这里我不能仅使用上面显示的代码?

Private Sub pSave()

Dim rw As Integer
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")

If blnSearch = True Then

    'Unlocking the sheet
    Sheets("Sheet1").Unprotect Password:="*********"

    totRows = Worksheets("Sheet1").Range("A3").CurrentRegion.Rows.Count

    For i = 2 To totRows
        If Trim(Worksheets("Sheet1").Cells(i, 1)) = Trim(ComboBox_ID.Text) Then
            Worksheets("Sheet1").Cells(i, 1).Value = TextBox_ID.Text
            'Worksheets("Sheet1").Cells(i, 2).Value = CheckBox_Eldesign.Value

我发现仅以与用户窗体中其他框相同的方式插入复选框即可工作,但是我无法弄清楚如何确定复选框将如何用其他代码写入单元格中?

在此先感谢您的时间和帮助!

1 个答案:

答案 0 :(得分:0)

多种解决方法:

  • 您已有的方式(注释行)很好。然后,您可以在excel中使用简单的条件格式。如果单元格值为true,则应显示X。如果值为false,则应显示为空单元格。

  • 重复使用与您提供的上部代码段相同的代码。代替注释行,只需在IfEnd If之间插入部分即可。另外,不要忘记多行Then语句要求您以结束条件结尾。

      If Trim(...) = Trim(...) Then
    
      Worksheets(...) = TextBox_ID.Text
    
      With Worksheets(...).Cells(i,2)
    
          If CheckBox_Eldesign.Value Then
                 .Value = “X”
          Else
                 .Value = “”
          End if
    
      End With
    
      End If
    

(我无法通过手机进行正确的格式化,对此表示歉意...)