|
▼くら さん:
>Sheet2に商品名、型番、機番、商品コードを約500行ほど入力しております。
>Sheet1にフォームコントロールボタンを描写し、このボタンを押すと検索窓(TextBox1,CommandButton1,ListBox1)が開くかんじです。
>ここからTextBox1に商品名(A列)または商品コード(D列)の一部を全角で入力し、CommandButton1を押すとSheet2を参照し、一部でも合致した行に含まれる4列のデータすべてをListBox1に抽出表示したいというわけです。部分合致なので複数行の表示を想定し、ListBox1は横長となっています。
> >Sheet1にフォームコントロールボタン
と書いてあるのに、あっち向いてホイッ のような発言で申し訳ないのですが、
フォームコントロール ではなく ユーザーフォーム でのたたき台です。
以下は UserForm1のコードです。
メニュ−[挿入]-[UserFormの挿入]でUserForm1を挿入し、
そこに
TextBox1
CommandButton1
ListBox1
を配置して お試しください。
'-----------------------------------------------------------
Option Explicit
Private FRange As Range 'FilterRange
Private WkSheet As Worksheet '作業シート(非表示)
Private Sub UserForm_Initialize()
Set FRange = Worksheets(2).[A1].CurrentRegion
On Error Resume Next
Set WkSheet = Worksheets("Temp")
On Error GoTo 0
If WkSheet Is Nothing Then
With Worksheets
Set WkSheet = .Add(After:=.Item(.Count))
End With
WkSheet.Visible = xlSheetHidden
End If
ListBox1.ColumnCount = 4
End Sub
Private Sub CommandButton1_Click()
Dim ss As String
Dim col As Long
ss = TextBox1.Text
If Len(ss) < 1 Then Exit Sub
If IsNumeric(ss) Then col = 4 Else col = 1
FRange.AutoFilter col, "*" & ss & "*"
If FRange.Columns(1).SpecialCells(xlVisible).Count > 1 Then
WkSheet.UsedRange.Clear
Intersect(FRange, FRange.Offset(1)).Copy WkSheet.[A1]
ListBox1.List = WkSheet.[A1].CurrentRegion.Value
End If
FRange.AutoFilter
End Sub
|
|