エクセルのvba初心者です
サイトを見ながらexselの検索ボックスを作ろうとしているのですがsubまたはfunctionが定義されていませんとでますどうすればよいでしょうか?
また途中の
msg = msg& i - 2 & "号"&vbcr
に関してエラーが出ているのですがどうすればよいでしょうか?
詳しい方ご教授お願いします。
Sub 検索()
Dim datasheet As Worksheet
Dim keyword As String
Dim maxrow As Long
Dim maxcol As Long
Dim msg As String
Dim i As Long
Dim j As Long
If Range("B2") = "" Then
MsgBox "検索したい語句を入力してください", vbExclamation
Exit Sub
End If
Call clearcolor
Set datasheet = ThisWorkbook.Sheets("MS-Bible")
With datasheet
keyword = Replace(StrConv(.Range("B2"), vbNarrow), "", "")
maxrow = .Cells(.Rows.Count, 1).End(xlUp).Row
maxcol = .Cells(4, .Columns.Count).End(xlToLeft).Column
For i = 5 To maxrow
For j = 2 To maxcol
If .Cells(i, j) <> "" Then
If Replace(StrConv(.Cells(i, j), vbNarrow), "", "") Like "*" & keyword & "*" Then
.Cells(i, j).Interior.Color = RGB(255, 255, 0)
msg = msg& i - 2 & "号"&vbcr
Exit For
End If
End If
Next
Next
If msg = "" Then
MsgBox "見つかりませんでした", vbExclamation
Else
MsgBox msg & "に情報があります", vbInformation
End If
End With
End Sub
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
No1です。
考えてみると、条件付き書式を利用すれば、ほとんどVBAを使わなくても同様のことは可能ですね。
準備として、
・事前にdatasheetの文字列の変換は済ませておくものとします。
・datasheetのどこかのセル(どこでもよい)を検索値の入力セルに設定しておきます
・他のセルには、「検索値の文字列を含む」を条件付き書式に設定しておきます
上記を設定しておけば、
「検索対象文字を変換して、datasheetの指定セルに入力する」
VBAを実行すれば良くなるので2、3行のコードで済んでしまうでしょう。
(StrConv関数に相当するシート関数が見当たらないので、そこだけをVBAで行うということになります)
No.1
- 回答日時:
こんばんは
>subまたはfunctionが定義されていませんとでますどうすればよいでしょうか?
通常は原因となっている行を修正します。
多分、
>Call clearcolor
でしょう。
clearcolorというプロシージャを呼び出していますが、どこにもないということかと。
想像するところ、シート内の背景色を一旦すべて「なし」にしてクリアしているのではないかと思いますが、わざわざ別処理にするほどのものでもなさそうです。(1行で済んでしまうので)
後の処理で、色を付けているのはdatasheetのようなので、その文は削除して、With文の直後に
.Cells.Interior.Color = xlNone
の1行を入れればすむのではないかと思います。
>また途中の
>msg = msg& i - 2 & "号"&vbcr
>に関してエラーが出ているのですがどうすればよいでしょうか?
その部分は、元のコードから変えているのでエラーになります。
きちんとコピーしましょう。
パット見でも、他にも2か所はコピーミスがあると思われます。
セルを一つずつ比べていくようなロジックになっていますけれど、その際に文字列変換をいちいち行っていますが、あまり効率が良いとは思えません。
入力値の文字列変換はしかたがないかも知れませんが、こちらは1度だけなので大したことはありません。
一方のシート内の文字は毎回変換するのではなく、あらかじめ変換する処理を1度だけ走らせておけば、検索の度に毎回
変換する必要はなくなるはずと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excel VBAでメールを送る方法について 2 2021/11/03 15:34
- Visual Basic(VBA) Excel VBAでフォルダ内の全テキストファイルの任意データを取得について 7 2021/12/18 16:00
- Visual Basic(VBA) EXCLE VBA シートクリックしたら該当シートコピー 1 2021/11/11 16:37
- Visual Basic(VBA) Excel VABについて 1.xlsm、VBA.xlsm2つのファイルがあり、1.xlsmにてVB 6 2021/12/13 17:46
- Visual Basic(VBA) シート名でファイル検索する 2 2021/11/30 17:05
- Visual Basic(VBA) 空のシートに関数を入れたい 2 2021/12/03 15:08
- Visual Basic(VBA) VBAで指定期間の範囲を抽出し、リストボックスに表示したいです。 2 2021/12/20 23:21
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) サブフォルダ含むすべてのフォルダの Excel 検索 4 2021/12/13 09:33
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
緯度、経度の 10進法と 60進法...
-
家電製品の電力周波数を変える機械
-
Mac 乗数の入力方法
-
Excel-VBAのmsgBox()の不思議
-
変換のプログラムを教えてくだ...
-
tex 郵便記号のだしかた
-
英数文字列のうちの数値を4桁に...
-
シフトJISのCSVファイルをUFT-8...
-
c++でドル円変換のプラグラム...
-
分を時間に変換するプログラム
-
魚眼レンズの画像処理
-
画像ファイルから.icoフォーマ...
-
画像ファイル変換(Tiff→PDF)
-
bmp→jpgに、jpg→bmpに
-
StrConvの使い方について教えて...
-
英単語をカタカナに変換するス...
-
C++からCへのソース変換について
-
VC++2005で、CString型に16進...
-
シーケンサのCPUはニーモニック...
-
ローマ字の出し方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
緯度、経度の 10進法と 60進法...
-
家電製品の電力周波数を変える機械
-
Mac 乗数の入力方法
-
10進数をBCDに変換する方法
-
bmp→jpgに、jpg→bmpに
-
なぜ通信には16進数文字列が使...
-
画像ファイル変換(Tiff→PDF)
-
シフトJISのCSVファイルをUFT-8...
-
分を時間に変換するプログラム
-
【EXCEL】カナ、ひらがなを英字...
-
C/C++→JAVAに変換するツール
-
c++でmatからvectorへの変換の...
-
UTF8→ShiftJISに変換したいです!
-
VB6からVB2010への変換について
-
C#でのpngからbmpへの変換について
-
StrConvの使い方について教えて...
-
PHPで、日本語からアルファベッ...
-
エクセルVBAの自動変換機能?
-
C++からCへのソース変換について
-
VB.NETをJavaに変換するツール...
おすすめ情報
使用したサイトはこちらです
https://blog.design-nkt.com/osyare-vba1/