前提・実現したいこと
お世話になっております。
下記の内容を実現したいのですが、似たような内容で検索しても回答が見つからないため質問させていただきます。
実現したい内容
・シート内から特定の文字列を検索し、ヒットした場合それ以前の行をすべて削除する。
前提
1.A列に「project1」「project2」「project3」のような文字列が記載されているシートを処理したい。
2.A列には、project~の他に、「項目1」「項目2」のような文字列が記載されている。
3.B列以降には値が入力されている。
4.条件に設定したい文字列は、別ブック「設定用.xlsm」の「setting」と名前を付けられたセルに記載している。
処理内容の例 (検索する文字列をproject3で設定)
1.「project1」と記載されているセルがA列1行目、「project2」と記載されているセルがA列40行目「project3」と記載されているセルがA列100行目に存在する。
2.A列から「project3」の文字列を、上から検索する。
3.「project3」の文字列を発見したら、発見した行より上の行を削除する。(今回はA列100行目に存在するので、A列1行目~99行目までを削除)
今回行いたい処理は以上となります。
お力添え頂ければ幸いです。
追記
質問文に試したコード、エラー部分等が存在せず、丸投げのような質問内容となってしまい大変失礼いたしました。
ご回答頂き、内容は解決したのですが、戒めとして質問内容を修正し、必要な情報を補完したうえでベストアンサーを定めさせていただきます。
またお力添え頂く機会があれば、その折は質問内容を正しく記載させていただきますので、御宥恕のほどよろしくお願い申し上げます。
発生している問題・エラーメッセージ
エラー文 クラスが登録されていません。 エラー箇所 project = Range("A:A").Find(SetingSht.Range(set)).Row '設定シートの検索値をA列から検索し、行番号を格納。
該当のソースコード
VBA
1’~~~~~~~~エラーが発生したコード~~~~~~~~~~~~~~~ 2'新しいシートをアクティブに 3test1sht.Activate 4Sheets("Sheet1").Select 5 6'必要項目を残して必要ない行を削除する。 7Dim project As Long 8 9project = Range("A:A").Find(SetingSht.Range(set)).Row '設定シートの検索値をA列から検索し、行番号を格納。 10 11'検索値の行番号の1つ上の行から最初の行まですべての値を削除する。 12With ActiveSheet.Range("A:A") 13Rows(1: & project - 1).Delete 14End With 15 16'~~~~~~~ご回答頂き、正しく処理が行えたコード~~~~~~~~~ 17'新しく作成したシートをアクティブに 18test1sht.Activate 19Sheets("Sheet1").Select 20 21'必要項目を残して必要ない行を削除する。 22Dim ws As Worksheet 23Dim project_1 As String 24 25Set ws = ActiveSheet 26 27project_1 = Workbooks("設定用.xlsm").Names("setting").RefersToRange.Value 28 29With ws.Range("A:A") 30.Resize(.Find(project_1).Row - 1).EntireRow.Delete 31End With 32
試したこと
findを用いれば可能なのではないかと試したのですが、文字列の検索を行う方法、検索した文字列を格納し、それを処理に用いる方法がわかりませんでした。
補足情報(FW/ツールのバージョンなど)
エクセルバージョン:2016
回答1件
あなたの回答
tips
プレビュー