我有 Userform ,userform1,有多个 TextboxesComboboxes .

我希望当用户填写所有文本框和组合框以将该信息保存到下一个可用行的工作表时 .

顶行(第1行)中的工作表具有 Headers ,用于定义每列中要保存的信息 . 前7列将始终从userform写入信息,接下来的121列不会始终从userform写入信息 .

对于前7列,信息将是,日期,行,音调,设备完成,操作员数量和注释 . 所有这些信息将来自组合框选择或文本框输入,并将始终保存到同一列中 . 我有这个部分想通了 .

对于我遇到问题的部分是121个其他列,这些列有一个 Headers ,基本上是一种拒绝类型的代码,如A,AB,ABE等,有121个不同的拒绝代码 .

在用户表单上,用户将从组合框中选择拒绝代码,然后在其旁边的文本框中输入该代码的拒绝数量,因此combobox1 = ABE和textbox1 = 3 . 当用户点击保存时,我希望sub获取日期,行,间距,设备完成,操作员数量和评论的信息,分别放在A,B,C,D,E,F列下的空行中然后sub将评估是否有任何拒绝记录,因此请查看combobox1值并在包含combobox1标头值的相应列下的相同行上写入相应的文本值 . 我的拒绝代码组合框值是根据这121列的工作表 Headers 填充的 .

Private Sub CommandButtonSave_Click()
    'Dec intg
    Dim irow As Long
    Dim ws As Worksheet
    Set ws = Worksheets("PC Data")
    Dim find1 As Range

    ''find first row in database
    irow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    ''Pitch 1 Entry
    With ws
        .Range("A" & irow) = DTPicker1.Value
        .Range("B" & irow) = ComboboxLine.Value
        .Range("C" & irow) = ComboboxShift.Value
        .Range("D" & irow) = ("1")
        .Range("E" & irow) = TextBox1.Value
        .Range("F" & irow) = TextBox2.Value
        .Range("G" & irow) = TextBox9.Value

此代码负责前7个文本框和组合框条目,但我不知道如何查找拒绝代码组合框和文本框 . 我感谢任何帮助 .

我已经尝试过使用.find,但我似乎无法让它工作,这是我添加到.find的abve代码 .

Private Sub CommandButtonSave_Click()
    'Dec intg
    Dim irow As Long
    Dim ws As Worksheet
    Set ws = Worksheets("PC Data")
    Dim Rng As Range


    ''find first row in database
    irow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row

    '' find location of combobox1 value on ws with a range of H1:DX1
    With ws
        Set Rng = .Range("H1:DX1").Find(what:=ComboBox1.Value, LookIn:=xlValues, _
                                        Lookat:=xlWhole, searchorder:=xlByRows, _
                                        searchdirection:=xlNext)
    End With

    With ws
        .Range("A" & irow) = DTPicker1.Value
        .Range("B" & irow) = ComboboxLine.Value
        .Range("C" & irow) = ComboboxShift.Value
        .Range("D" & irow) = ("1")
        .Range("E" & irow) = TextBox1.Value
        .Range("F" & irow) = TextBox2.Value
        .Range("G" & irow) = TextBox9.Value
        .Range(Rng & irow) = TextBox3.Value
    End With