userform使用命令按钮的变量

时间:2017-09-03 18:02:20

标签: vba excel-vba combobox userform excel

我有一个我无法解决的问题......我的问题是:

我需要创建一个在4张内执行数据搜索的用户表单,这些数据在电子表格中每年只相同,但是当我尝试链接我的CommandBotton并在错误组合框中使用该变量时...

业务规则如下:

用户输入员工的注册会自动将数据提取到用户表单的字段,以防他想要更改工作表时使用组合框在这些工作表之间进行更改并执行相同的搜索但是在不同的工作表中。



Public plan As Worksheet

Sub ComboBox1_Change()

Sheets(ComboBox1.ListIndex + 1).Activate

End Sub

Sub UserForm_Initialize()

For Each plan In ActiveWorkbook.Worksheets

ComboBox1.AddItem plan.Name

Next plan

End Sub

Sub bnt1_Click()

   With ThisWorkbook.Sheets(plan).Range("A:A")


Set c = .Find(textCp.Value, LookIn:=xlValues, lookat:=xlPart)

If Not c Is Nothing Then

c.Activate
textCp.Value = c.Value
textName.Value = c.Offset(0, 1).Value
textAd.Value = c.Offset(0, 2).Value
text60.Value = c.Offset(0, 65).Value
text60_20.Value = c.Offset(0, 66).Value
text100.Value = c.Offset(0, 67).Value
text100_20.Value = c.Offset(0, 68).Value
textAdc.Value = c.Offset(0, 69).Value
textAdcT.Value = c.Offset(0, 70).Value

End If
End With

End Sub

Sub btnSair_Click()

Unload FormPes

End Sub




1 个答案:

答案 0 :(得分:0)

只需使用With plan.Range("A:A")

以下是我编写代码的方法。与With c.EntireRow相反,c.Offset(0, 65).Value会让您更容易识别您所指的列。

Sub bnt1_Click()

   With plan.Range("A:A")
        Set c = .Find(textCp.Value, LookIn:=xlValues, lookat:=xlPart)

        If Not c Is Nothing Then
            With c.EntireRow
                textCp.Value = .Value
                textName.Value = .Range("B1").Value
                textAd.Value = .Range("C1").Value
                text60.Value = .Range("BN1").Value
                text60_20.Value = .Range("BO1").Value
                text100.Value = .Range("BP1").Value
                text100_20.Value = .Range("BQ1").Value
                textAdc.Value = .Range("BR1").Value
                textAdcT.Value = .Range("BS1").Value
            End With
        End If
    End With

End Sub