Jos minulla on useammassa solussa Excel-taulukossa esim. luku 5555 ja muita soluja on välissä esim 100... kuinkahan onnistuisi poistamaan vain ja ainoastaan 5555 jättäen yhden poistamatta?
Moikka squid!
Täss ois yks tapa...
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim sCols As Long, sRows As Long
Dim cCnt As Long, rCnt As Long
Dim cnt As Integer
sCols = ActiveSheet.Columns.Count ' = 256 saraketta
sRows = ActiveSheet.Rows.Count ' = 65535 rivä
For cCnt = 1 To sCols '*sama jutska: cCnt = sCols To 1 Step -1
For rCnt = 1 To sRows '*lopusta alkuun: rCnt = sRows To 1 Step -1
If ActiveSheet.Cells(rCnt, cCnt).Value = 5555 And cnt = 1 Then
ActiveSheet.Cells(rCnt, cCnt).Value = Empty
End If
If ActiveSheet.Cells(rCnt, cCnt).Value = 5555 And cnt = 0 Then cnt = 1
Next rCnt
Next cCnt
End SubNopeampi tapa on valita sivulta vain solut, jotka sisältävät arvon, ettei tarvitse tyhjiä soluja läpi käydä turhaan.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
Dim solu As Range
Dim eka As Boolean
'estetään turha vilkkuminen piilottamalla tekemisemme käyttäjältä estämällä ruudunpäivitys
Application.ScreenUpdating = False
'valitaan sivulta vain solut, joissa on sisältöä
Selection.SpecialCells(xlCellTypeConstants, 23).Select
'käydään edellisellä rivillä valitut solut läpi yksi kerrallaan
'huomioi, että tällä tavalla solut käydään läpi rivi, ei sarake kerrallaan
For Each solu In Selection
If solu.Value = "5555" Then 'tarkistetaan solun arvo
If Not eka Then 'onko ensimmäinen haettu arvo löytynyt?
eka = True 'ei, eli kirjataan löytyminen
Else 'ensimmäinen arvo löytynyt
solu.Value = Empty 'poistetaan muut
End If
End If
Next solu
'aktivoidaan klikattu solu, muuten valituiksi jäävät solut, joissa on/oli arvo
Target.Select
'Tärkeä! Palautetaan ruudun päivitys,
'muuten excel käyttö turhan hankalaa, kun tekemiset ei näy ruudulta
Application.ScreenUpdating = True
End SubKiitos molemmille vastaajille
Aihe on jo aika vanha, joten et voi enää vastata siihen.