< návrat zpět

MS Excel


Téma: smazání obsahu buněk - nefunkční maska * rss

Zaslal/a 4.4.2019 7:44

Ahoj,

poradí mi prosím někdo, kde dělám chybu? Níže uvedené makro mi smaže i buňky obsahující text se znakem ^. V uvedeném rozsahu A1:A10. Já však chci obsah buněk obsahující ^ zachovat a smazat v daném rozsahu všechny ostatní buňky

díky moc

např.

ahoj^

dobrý den^

s přátelským pozdravem^

]
Private Sub CommandButton15_Click()

For Each cell In [A1:A10]

If cell.Value <> "*^*" Then cell.ClearContents

Next cell

End Sub

Zaslat odpověď >

#043096
avatar
Mělo by fungovat
If Not cell.Value Like "*^*" Then cell.ClearContentscitovat
#043098
elninoslov
Ak je to len 10 riadkov, tak je to šumák, ale ak by tých riadkov bolo veľa, tak bude táto metóda pomalá. V tom prípade by som použil takéto niečo (použite buď to InStr alebo Like):
Private Sub CommandButton15_Click()
Dim RNG As Range, D(), Radku As Long, i As Long

Radku = Cells(Rows.Count, 1).End(xlUp).Row
If Radku = 1 Then
ReDim D(1 To 1, 1 To 1): D(1, 1) = Cells(1, 1).Value
Else
D = Cells(1, 1).Resize(Radku).Value
End If

For i = 1 To Radku
If InStr(1, D(i, 1), "^") = 0 Then
'If Not D(i, 1) Like "*^*" Then
If RNG Is Nothing Then Set RNG = Cells(i, 1) Else Set RNG = Union(RNG, Cells(i, 1))
End If
Next i

If Not RNG Is Nothing Then RNG.ClearContents
End Sub

Dá sa to samozrejme rozšíriť aj tak, že validné riadky zapíše pod seba bez medzier vzniknutých po mazaní nevalidných.citovat
#043100
avatar
elninoslov:

bylo by možné místo
For i = 1 To Radku

použít příkaz

for eachcitovat
#043101
elninoslov
"For Each" je väčšinou zaužívaná pre použitie s objektami (napr. bunkami), "For i" väčšinou s poľami. Tu som použil pole, lebo načítanie poľa o veľkosti tisícov buniek trvá okamžik, kdežto prechádzanie tisícov buniek po jednej trvá dlho. V tomto prípade sa dá tiež "For Each" použiť na pole, ale musí sa definovať ďalšia Variantná premenná na položku poľa, a v cykle použiť napr. i = i + 1, aby sme mali čítač pre indexáciu buniek, lebo keby sme po jednej bunke aj mazali, tak to je pri veľa bunkách ešte pomalšie. Takže to i by sme použili na "nahromadenie" buniek v RNG oblasti a následné zmazanie naraz. Toľko na vysvetlenie dôvodov, čo ma viedli k uvedenému príkladu :)citovat
#043102
avatar
Děkuji.
"For Each" teprve objevuji, proto ten dotaz.citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje