
作成したマクロでどうしてもエラーが、でてきます。
内容としては
2つのエクセルファイルを起動し、①片方のファイルのキーワード一覧表から、②もう片方のファイルの中で一致・重複するキーワードに色付け(セルor文字)する作業を繰り返すというものです。
例)①にNGワードが並んでおり、②の複数のセルに文章が書かれている。②の文章中にNGワードが含まれているセルを発見する毎に色付け作業を繰り返す。
作成したマクロは
Sub test()
Dim actBook, objBook, ngWord, mySeru, i
'NGワードのあるブックでSheet1にあるものとする。
Set actBook = Workbooks("①.xls")
'セルに文章が入っているブック
Set objBook = Workbooks("②.xls")
'NGワードのあるSheet1を選択
actBook.Sheets("Sheet1").Select
'NGワードのセルをngWordという変数に入れる
For Each ngWord In ActiveSheet.UsedRange
'セルに文章が入っている②ブックの各シートへの繰り返し
For i = 1 To objBook.Sheets.Count
'文章が入っているセルをmySeruという変数に入れる
For Each mySeru In objBook.Sheets(i).UsedRange
'各セルの文章にNGワードが含まれているかを確認
If InStr(1, mySeru.Value, ngWord.Value) <> 0 Then
'含まれている場合、セルを黄色で塗りつぶし
mySeru.Interior.ColorIndex = 6
End If
Next
Next
Next
Set actBook = Nothing
Set objBook = Nothing
End Sub
これで範囲がありませんとエラーがでます。
どうしたらよろしいでしょうか?
よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんにちは!
すでに回答は出ていますので、参考程度で・・・
ブックが開いていない場合は開くところからやってみました。
「NGワード」が入っているブックの標準モジュールとしています。
「NGワード」はコードが記載されているブックの「Sheet1」に入力されているという前提です。
Sub Sample1()
Dim k As Long, myPath As String, fN As String, myFlg As Boolean
Dim wS As Worksheet, wB As Workbook
Dim c As Range, myFound As Range, myFirst As Range, myRng As Range
myPath = "保存場所のパス" & "\"
fN = "②.xls" '←色付けをしたいブックのファイル名★
'▼ファイルが開いていない場合は開く//
For k = 1 To Workbooks.Count
If Workbooks(k).Name = fN Then
myFlg = True
Exit For
End If
Next k
If myFlg = False Then
Workbooks.Open (myPath & fN)
End If
'▼開いたファイルの各シート、セルの色付け//
Set wB = Workbooks(fN)
For k = 1 To wB.Worksheets.Count
Set wS = wB.Worksheets(k)
For Each c In ThisWorkbook.Worksheets("Sheet1").UsedRange
Set myFound = wS.Cells.Find(what:=c, LookIn:=xlValues, lookat:=xlPart)
If Not myFound Is Nothing Then
Set myFirst = myFound
Set myRng = myFound
Do
Set myFound = wS.Cells.FindNext(after:=myFound)
If myFound.Address = myFirst.Address Then Exit Do
Set myRng = Union(myRng, myFound)
Loop
myRng.Interior.ColorIndex = 6
End If
Next c
Next k
End Sub
※ 開いたブックは開いたままにしています(上書き保存や閉じるの操作はしていない)
※ 以下のコトは余計なお世話かもしれませんが・・・
お示しのコード内の変数
>Dim actBook, objBook, ngWord, mySeru, i
は何も変数の宣言をしていないので、すべて Variant型になっています。
大勢に影響はないとは思いますが
一つずつ型を宣言するコトをおススメします。
まずはこの程度で・・・m(_ _)m
No.1
- 回答日時:
エラーが出るのは、「Set actBook = Workbooks("①.xls")」ですか?
①.xls は、事前に開いてあるのですよね?もし開いていないのであれば、開いてください。もしくは、マクロの中から開いてください。
また、ファイル名が違っていてもエラーになるので、その辺も要確認です(拡張子も含めて)。
その他、修正が必要な個所があります。こんな感じです。
Sub test()
Dim actBook, objBook, ngWord, mySeru, i
'NGワードのあるブックでSheet1にあるものとする。
Set actBook = Workbooks("①.xls")
'セルに文章が入っているブック
Set objBook = Workbooks("②.xls")
'NGワードのセルをngWordという変数に入れる
For Each ngWord In actBook.Sheets("Sheet1").UsedRange
If ngWord.Value <> "" Then
'セルに文章が入っている②ブックの各シートへの繰り返し
For i = 1 To objBook.Sheets.Count
'文章が入っているセルをmySeruという変数に入れる
For Each mySeru In objBook.Sheets(i).UsedRange
'各セルの文章にNGワードが含まれているかを確認
If InStr(1, mySeru.Value, ngWord.Value) <> 0 Then
'含まれている場合、セルを黄色で塗りつぶし
mySeru.Interior.ColorIndex = 6
End If
Next
Next
End If
Next
Set actBook = Nothing
Set objBook = Nothing
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) セルの値からファイルを複数作りたい2 3 2022/10/07 15:54
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セルをクリック⇒そのセルに入力...
-
貼り付けで複数セルに貼り付けたい
-
エクセルで指定したセルのどれ...
-
枠に収まらない文字を非表示に...
-
Excel 例A(1+9) のように番地の...
-
数式を残したまま、別のセルに...
-
Excelでのコメント表示位置
-
エクセルの書式設定の表示形式...
-
(Excel)数字記入セルの数値の後...
-
エクセルの一つのセルに複数の...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
対象セル内(複数)が埋まった...
-
excelの特定のセルの隣のセル指...
-
Excelで数式内の文字色を一部だ...
-
Excel2003 の『コメント』の編...
-
【エクセル】IF関数 Aまたは...
-
EXCELのセルの中の半角カンマの...
-
EXCEL VBA セルに既に入...
-
エクセルで住所と建物名を分け...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
スプレッドシートで複数のプル...
-
excelで日付関数の文字列変換の...
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
枠に収まらない文字を非表示に...
-
セルをクリック⇒そのセルに入力...
-
エクセルの一つのセルに複数の...
-
数式を残したまま、別のセルに...
-
(Excel)数字記入セルの数値の後...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
エクセルの書式設定の表示形式...
-
EXCEL VBA セルに既に入...
-
excelの特定のセルの隣のセル指...
-
エクセルのセルの枠を超えて文...
-
Excelでのコメント表示位置
-
エクセル オートフィルタで絞...
-
Excelで数式内の文字色を一部だ...
おすすめ情報