一直在寻找并有点困惑。
我有一张表(此处称为“ModelSpec”),其中填充了电视数据,标题以A5:Z5开头(示例标题标题为“部件号”,“品牌”,“尺寸”,“分辨率”)。 ..等等)。有些是数据,有些是空白单元格。
我创建了一些USERFORM,允许用户选择他们想要搜索模型规范的方式。 我现在要做的是获取位于用户选择的USERFORM文本框中的数据(“部件号”),并在“ModelSpec”表中搜索部件号(位于A6列:A列) ?)。数据行数可能会改变,我想我们需要一个FOR循环来停止空行。
找到后,整个行将被复制并仅在同一ModelSpec表的A1:Z1上粘贴值。 所以基本上我目前正在FORMS中的Private Sub工作,而不是MODULES。
从那里我有另一个代码将细节提取到其他地方。
请帮助这个迷茫的男人。
答案 0 :(得分:0)
这是您的起点,拥有您需要做的所有要素。
发生了什么:
备注:强>
没有处理用户输入错误。小写没有大写字母,或下拉框限制用户的选择。 (在另一个问题中)要做的好事是创建一个动态下拉列表或组合框,它由已有的部件号填充,限制用户输入错误。
如果页面上有多个匹配项,它将遍历所有行并将匹配项复制到第1行。然后复制第1行,之后找到任何匹配项,因此最后一个将匹配是你唯一看到的人。如果您希望它仅匹配FIRST,则在将搜索行复制到第1行后立即包含End语句。我假设您的搜索列具有唯一的ID /部件号。
<强>代码:强>
Private Sub cmdSearch_Click()
Dim lastRow As Long, lCol As Long, lRow As Long
Dim sName As String
sName = "ModelSpec"
lastRow = Sheets(sName).Range("A" & Rows.count).End(xlUp).row
For lRow = 6 To lastRow
'Check to see if A(lRow) = TextBox. Exact match required
If Sheets(sName).Cells(lRow, "A").Text = txtPartNumber.Text Then
MsgBox("Match Found for Part #: " & txtPartNumber.Text)
For lCol = 1 To 26 'Loop through columns A-Z, Copy lRow to Row 1
Sheets(sName).Cells(1, lCol) = Sheets(sName).Cells(lRow, lCol)
Next lCol
Else
MsgBox("No match found for Part #: " & txtPartNumber.Text)
End If
Next lRow
End Sub