Excel / VBA - Memilih sel antara 2 kata kunci

- Isu
- Penyelesaian
Isu
Saya cuba menulis makro yang bermula dari sel aktif - naik lajur memilih 20 kata dan mencari kata carian "A" - memilihnya. Kemudian kembali ke lajur untuk perkataan carian berikutnya "B" (yang dalam kes ini adalah contoh pertama apa-apa dengan nilai $) dan memilih semua sel antara 2 kata carian dan memadam semua baris. Berikut adalah apa yang saya dapat setakat ini (bahagian pertama di mana ia mencari "N" hanya mendapatnya pada rekod yang betul yang ingin kita padamkan.Contoh kod:
Adakah BenarTetapkan Sel = Kolum (11). Cari (Apa: = "N", _
Selepas: = Sel (11, 11), _
LookIn: = xlFormulas, _
LookAt: = xlPart, _
SearchOrder: = xlByRows, _
SearchDirection: = xlNext, _
MatchCase: = False, _
SearchFormat: = False)
Jika Sel Adakah Tiada Apa-apa Kemudian Keluar
Sel.Pilih
ActiveCell.Select
ActiveCell.EntireRow.Range ("A1"). Pilih
Julat (Pemilihan, Seleksi.Offset (-20, 0)). Pilih
Tetapi kod tersebut tidak berfungsi dengan betul.
Penyelesaian
Anda perlu mencari di mana sel pertama adalah. dan kemudian anda perlu mencari lagi di mana sel kedua. Gunakan fungsi di bawahSub MyOrigSubDefHere ()Dim lFirstHit As Long
Dim lSecondHit As Long
Adakah Benar
lFirstHit = getItemLocation ("N", Lajur (11),, Palsu)
Jika (lFirstHit = 0) Kemudian Exit Do
lSecondHit = getItemLocation ("B", Range (Sel (lFirstHit + 1, 11), Sel (Rows.Count, 11)), Salah)
Jika (lSecondHit = 0) Kemudian Exit Do
Baris (lFirstHit & ":" & lSecondHit) .Delete
Loop
Sub Akhir
Fungsi Awas getItemLocation (sLookFor As String, _
rngSearch As Range, _
BFullString Pilihan Sebagai Boolean = Benar, _
Pilihan bLastOccurance Sebagai Boolean = Benar, _
BFindRow Pilihan Sebagai Boolean = Benar) Seperti Panjang
'cari barisan / lajur pertama / terakhir dalam rentang untuk rentetan tertentu
Dim Cell As Range
Dim iLookAt Sebagai Integer
Dim iSearchDir As Integer
Dim iSearchOdr As Integer
Jika (bFullString) _
Kemudian
iLookAt = xlWhole
Lain
iLookAt = xlPart
Akhir Jika
Jika (bLastOccurance) _
Kemudian
iSearchDir = xlPrevious
Lain
iSearchDir = xlNext
Akhir Jika
Jika Tidak (bFindRow) _
Kemudian
iSearchOdr = xlByColumns
Lain
iSearchOdr = xlByRows
Akhir Jika
Dengan rngSearch
Jika (bLastOccurance) _
Kemudian
Tetapkan Cell =. Cari (sLookFor, .Cells (1, 1), xlValues, iLookAt, iSearchOdr, iSearchDir)
Lain
Tetapkan Sel =. Cari (sLookFor, .Cells (.Rows.Count, .Columns.Count), xlValues, iLookAt, iSearchOdr, iSearchDir)
Akhir Jika
Akhir Dengan
Jika Sel Adakah Tiada Kemudian
getItemLocation = 0
ElseIf Not (bFindRow) _
Kemudian
getItemLocation = Cell.Column
Lain
getItemLocation = Cell.Row
Akhir Jika
Tetapkan Cell = Tiada apa-apa
Fungsi Akhir
Terima kasih kepada rizvisa1 untuk tip ini.