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 Sub
Nopeampi 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 Sub
Kiitos molemmille vastaajille
Aihe on jo aika vanha, joten et voi enää vastata siihen.