●やりたいこと
顧客管理データベースがあり、その更新用に
以下のようなユーザーフォームを作成しました。
右側黄色枠内にデータベースにある顧客情報が一覧で記載され、
その中の情報を選択すると左側の情報が入り、変更できるといったフォームにしたいです。
●データベース
以下のような項目で、37列目まで続いています。
検索するのは、10列目の団体名で、「株式会社テラテイル」のように
漢字、カタカナ、ひらがな、英語が混在しています。
●困っていること
黄色枠内に顧客情報を表示させることはできましたが、
「検索画面」の下の白枠内に顧客名を入れてもエラーが出てしまいます。
例えば、データベースに「株式会社テラテイル」という情報があったとして、
検索画面に「てら」といれて検索ボタンを押すと「株式会社テラテイル」という情報が
黄色枠内に表示されるようにしたいです。
●エラーの内容と作成中のコード
データベースのシートの内容を別シート(作業)にコピーし、
条件にあった情報のみを残していくイメージです。
ただ、やりたいことが実現できれば全く違うコードでも問題ありません。
エラーとなる部分を太字に、⇒でエラー内容を記載しています。
Dim data, str As String, strz As String, i As Long, tori As String, furi As String
str = txt検索.Text
str = StrConv(str, vbKatakana) 'カタカナ
str = StrConv(str, vbUpperCase) '大文字
str = StrConv(str, vbWide) '全角
With Sheets("データベース")
If .autfiltermode Then
.Range("A1").autfilter
End If
data = Range("A1").CurrentRegion
End With
Application.ScreenUpdating = False
With Sheets("作業用")
.Cells.Clear
.Range("A1", .Cells(UBound(data), UBound(data, 2))) = data
With .Range("A1").CurrentRegion.Sort_
key1:=.Offset(,10),order1:=xlascending, header:=xlyes,_
key2:=.offset(,11),order3:=xlascending
⇒「構文エラー」と出てしまいます。11列目には先方の担当者名が記載されています。
End With
'余分な行の削除
For i = UBound(data) To 2 Step -1
tori = StrConv(.Cells(i, 10), vbKatakana)
tori = StrConv(tori, vbUpperCase)
tori = StrConv(tori, vbWide)
⇒エラー:参照が不正または不完全です。
furi = StrConv(.Cells(i, 11), vbKatakana)
furi = StrConv(tori, vbUpperCase)
furi = StrConv(tori, vbWide)
If (InStr(tori, str) > 0 Or InStr(furi, str) > 0) = False Then
.Cells(i, 1).EntireRow.Delete
End If
Next i
Erase data
data = .Range("A1").CurrentRegion
End With
With ListBox1
.ColumnCount = -1
.ColumnWidths = "0;0;40;30;60;60;0;0;0;200;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0"
.List = data
End With
Application.ScreenUpdating = True
End Sub
以上となります。
まだマクロを勉強し始めたばかりで基本的なところができていないかもしれません。。
お知恵を貸していただけませんでしょうか・・
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。