Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 从userform复选框填充数据&;可选按钮_Vba_Excel - Fatal编程技术网

Vba 从userform复选框填充数据&;可选按钮

Vba 从userform复选框填充数据&;可选按钮,vba,excel,Vba,Excel,我正在创建一个userform,我希望它能够填充数据选项卡中的值,并默认为某些值。 我想我有文本框和组合框,但找不到关于根据选择使用多个可选按钮为一个单元格生成数据的信息 从这个例子中,我的标准是“二次保险”,我如何将它们全部链接起来,以使单元格b1填充所选选项? 我完全在猜测,但我认为复选框更简单一些,如果选中则为真,如果未选中则为假。 到目前为止,我遇到的只是一个代码,用指定的文本/组合框的值填充单元格,并将对我需要设置条件的每一列重复该代码 Private Sub CommandBut

我正在创建一个userform,我希望它能够填充数据选项卡中的值,并默认为某些值。 我想我有文本框和组合框,但找不到关于根据选择使用多个可选按钮为一个单元格生成数据的信息

从这个例子中,我的标准是“二次保险”,我如何将它们全部链接起来,以使单元格b1填充所选选项? 我完全在猜测,但我认为复选框更简单一些,如果选中则为真,如果未选中则为假。 到目前为止,我遇到的只是一个代码,用指定的文本/组合框的值填充单元格,并将对我需要设置条件的每一列重复该代码

  Private Sub CommandButton1_Click()
    Dim LastRow As Long, ws As Worksheet

    Set ws = Sheets("Sheet1")
    LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row + 1 'Finds the last blank row
    ws.Range("A" & LastRow).Value = TextBox1.Text 'Adds the TextBox1 into Col A & Last Blank Row
   Me.Hide
End Sub
组合框列表

Private Sub UserForm_Initialize()
ComboBox1.Value = ("N/A")
ComboBox1.List = Split("N/A Yes No")
End Sub
请让我知道,如果我缺乏信息或如何附加我的测试工作表,希望你能看到图片(我不能在我的工作服务器上)。
提前感谢您提供的所有教育。

如果选项按钮的标题与您想要的单元格文本相同,则您可能希望存储类似的内容:

Private Sub CommandButton1_Click()
  Dim LastRow As Range
  With Sheets("Sheet1")
    Set LastRow = .Rows(.Cells(Rows.Count, 1).End(xlUp).Row + 1).Cells
    If OptionButton1 Then
      LastRow(2).Value2 = Me.OptionButton1.Caption
    ElseIf Me.OptionButton2 Then
      LastRow(2).Value2 = Me.OptionButton2.Caption
    Else
      LastRow(2).Value2 = Me.OptionButton3.Caption
    End If
  End With
End Sub
这会将所需单元格设置为所选选项按钮标题的值

要将数据加载回userform中,可以使用以下方法:

Sub Load_in(Row_To_Load As Long)
  Dim MyRow As Range
  With Sheets("Sheet1")
    Set MyRow = .Rows(Row_To_Load).Cells
    If MyRow(2).Value2 = OptionButton1.Caption Then
      OptionButton1.Value = True
    ElseIf MyRow(2).Value2 = OptionButton2.Caption Then
      OptionButton2.Value = True
    Else
      OptionButton3.Value = True
    End If
  End With
End Sub

为此,我假设名称没有更改。此外,如果未选择任何选项,则将使用第三个选项(N/A)。这同样适用于将其加载回。如果您不想这样做,只需将
Else
部分更改为
ElseIf
,使其看起来像前两个选项。

如果选项按钮的标题与您想要的单元格文本相同,则类似的内容可能是您想要存储它的内容:

Private Sub CommandButton1_Click()
  Dim LastRow As Range
  With Sheets("Sheet1")
    Set LastRow = .Rows(.Cells(Rows.Count, 1).End(xlUp).Row + 1).Cells
    If OptionButton1 Then
      LastRow(2).Value2 = Me.OptionButton1.Caption
    ElseIf Me.OptionButton2 Then
      LastRow(2).Value2 = Me.OptionButton2.Caption
    Else
      LastRow(2).Value2 = Me.OptionButton3.Caption
    End If
  End With
End Sub
这会将所需单元格设置为所选选项按钮标题的值

要将数据加载回userform中,可以使用以下方法:

Sub Load_in(Row_To_Load As Long)
  Dim MyRow As Range
  With Sheets("Sheet1")
    Set MyRow = .Rows(Row_To_Load).Cells
    If MyRow(2).Value2 = OptionButton1.Caption Then
      OptionButton1.Value = True
    ElseIf MyRow(2).Value2 = OptionButton2.Caption Then
      OptionButton2.Value = True
    Else
      OptionButton3.Value = True
    End If
  End With
End Sub

为此,我假设名称没有更改。此外,如果未选择任何选项,则将使用第三个选项(N/A)。这同样适用于将其加载回。如果您不想这样做,只需将
Else
部分更改为
ElseIf
,使其看起来像前两个选项。

您检查了吗?对我来说,你想要什么还不清楚,但如果这就是你想要的,这可能会对你有很大帮助,让你有一个开始……我正试图理解我想要的,但我认为这是完全不同的。基本上,我想用给定的选项填写这个用户表单,并让它在数据选项卡中填充我的选择。因此,对于3个选项按钮,我希望根据所选选项填写“二次保险”列的单个单元格N/a,是或否。您是否选中了?对我来说,你想要什么还不清楚,但如果这就是你想要的,这可能会对你有很大帮助,让你有一个开始……我正试图理解我想要的,但我认为这是完全不同的。基本上,我想用给定的选项填写这个用户表单,并让它在数据选项卡中填充我的选择。因此,对于3个选项按钮,我希望根据所选的选择N/a(是或否)填写“二次保险”列的单个单元格。在您的示例中,使用“查找最后一行”是否比我的更好或更有效?我确实设法让它使用“如果选项按钮1=true,那么在单元格B中返回X值”这句话来填充它。我可能弄错了。。。因为,它应该做你正在寻找的。。。如果按钮被按下,它会在B的单元格中写入选项按钮的标题。。。不过,您也可以对第一个按钮使用
LastRow(2).Value2=“Yes”
(对第二个按钮使用“No”/“N/A”表示
)。。。要取回它,您可以使用
如果MyRow(2).Value2=“Yes”,那么第一个使用
,第二个使用“No”。。。哦,还有设置活动线的方法。。。这只取决于“你喜欢什么”(只要时间不重要)是否能正常工作。但是,是否有方法根据此选择自动使用N/A填充其他单元格?例如,如果这3个按钮属于单元a的主要类别,导致单元B和C的其他选择,则它们也将是“N/a”。我可以这样做而不必为每个选项选择“不适用”吗?我无法像我想的那样向代码中添加额外的单元格/列<代码>ws.Range(“B,C”和LastRow.Value=“N/A”
如果您只想在选择了N/A的情况下使用N/A,那么只需将
Else
更改为
ElseIf Me.OptionButton3,然后
…如果您保持原样,那么如果未选择任何内容,它将自动弹出N/A…对于C列:我不知道您真正在做什么,也不知道如何评估放入其中的内容,但理论上它是应该是可能的…我正在寻找一种方法来列出我希望通过选择N/a选项而受到影响的单元格范围,但我认为这可能有点离题。我是通过在if true语句后分别列出每个单元格来实现的。感谢您的回复。在您的示例中使用“查找最后一行”是更好还是更有效nt使用它的方式比我的好吗?我确实设法让它使用与“如果选项按钮1=true,则返回单元格B中的X值”相同的行填充我可能误解了你的意思…因为,它应该做你想做的事情…如果按下按钮,它会在B单元格中写入选项按钮的标题…但是,你也可以使用
LastRow(2)。Value2=“Yes”
作为第一个按钮(第二个按钮为“No”/“N/A”作为
其他按钮
)…对于取回它,如果MyRow(2).Value2=“Yes”,则第一次使用
,第二次使用
(“No”表示第二次)…哦,以及设置活动行的方式…这只取决于“您喜欢什么”(只要时间不重要)是否使其正常工作。但是,是否有方法基于此自动使用N/A填充其他单元格