Excel / VBA - Válasszon cellákat 2 kulcsszó között
- Probléma
- Megoldás
Probléma
Megpróbálok írni egy olyan makrót, amely az aktív cellából indul ki - felemelkedik az oszlopban a 20 mondat kiválasztásával, és az "A" keresési szót keres - kiválasztja azt. Ezután a következő keresőszó "B" oszlopát tekint vissza (amely ebben az esetben a $ értékkel rendelkező bármelyik első példánya), és kiválasztja az összes cellát a 2 keresőszó között, és törli az összes sort. Itt van, amit eddig találtam (az első rész, ahol "N" -et keres, csak azt a helyes rekordot kapja, amelyet törölni akarunk.Kódpélda:
Csinálj igazatCell = oszlopok (11) beállítása. (Mi: = "N", _
Után: = Cellák (11, 11), _
LookIn: = xlFormulas, _
LookAt: = xlPart, _
SearchOrder: = xlByRows, _
SearchDirection: = xlNext, _
MatchCase: = Hamis, _
SearchFormat: = False)
Ha a cella nem lesz, akkor kilép
Cell.Select
ActiveCell.Select
ActiveCell.EntireRow.Range ( "A1"). Jelölje
Tartomány (Kiválasztás, Kiválasztás.Offset (-20, 0))
De a kód nem működik megfelelően.
Megoldás
Meg kell találnod, hol van az első cella. és akkor újra meg kell találnod, hol van a második cella. Használja az alábbi funkciótSub MyOrigSubDefHere ()Dim lFirstHit olyan hosszú
Dim lSecondHit olyan hosszú
Csinálj igazat
lFirstHit = getItemLocation ("N", oszlopok (11),, Hamis)
Ha (lFirstHit = 0), akkor kilép
lSecondHit = getItemLocation ("B", tartomány (cellák (lFirstHit + 1, 11), cellák (sorok.számla, 11)),, Hamis)
Ha (lSecondHit = 0), akkor kilép
Sorok (lFirstHit & ":" & lSecondHit)
Hurok
Vége vége
Nyilvános funkció getItemLocation (sLookFor mint String, _
rngKeresés mint tartomány
Választható bFullString mint Boolean = True, _
Választható bLastOccurance As Boolean = True, _
Választható bFindRow mint Boolean = True) Hosszú
'keresse meg az első / utolsó sort / oszlopot egy adott string tartományban
Dim Cell As Range
Dim iLookAt As Integer
Dim iSearchDir As Integer
Dim iSearchOdr As Integer
Ha (bFullString) _
Azután
iLookAt = xlWhole
Más
iLookAt = xlPart
Vége Ha
Ha (bLastOccurance) _
Azután
iSearchDir = xlPrevious
Más
iSearchDir = xlNext
Vége Ha
Ha nem (bFindRow) _
Azután
iSearchOdr = xlByColumns
Más
iSearchOdr = xlByRows
Vége Ha
Az rngSearch segítségével
Ha (bLastOccurance) _
Azután
Set Cell = .Keresés (sLookFor, .Cells (1, 1), xlValues, iLookAt, iSearchOdr, iSearchDir)
Más
Állítsa be a Cell = .ind. (SLookFor, .Cells (.Rows.Count, .Columns.Count), xlValues, iLookAt, iSearchOdr, iSearchDir)
Vége Ha
Vége
Ha a sejt semmi sem történik
getItemLocation = 0
ElseIf Not (bFindRow) _
Azután
getItemLocation = Cell.Column
Más
getItemLocation = Cell.Row
Vége Ha
Set Cell = Semmi
Végfunkció
Ennek köszönhetően a rizvisa1.