Hei!
Eli varastokirjanpitoa näppäilen VBA:ta ja Exceliä käyttäen. Ongelmaksi muodostuu tavaraa poistettaessa Sheet2:sta löytyvä solu, joka sisältää kyseisen tuotteen nimen. Ideana siis poistaa tämä rivi, mutta jostain syystä excel päättääkin poistaa solun sisältävän sarakkeen. Kertokaas jos löydätte koodista virheen?
Private Sub CommandButton3_Click() Dim nimike As String Dim loyto As Range Dim loytoo As Range nimike = InputBox("Minkä tuotenimikkeen tahdot poistaa?") With Sheet1 Set loyto = Range("A1:H50").Find(What:=nimike) End With loyto.Delete Sheet2.Activate With ActiveSheet Set loytoo = ActiveSheet.Range("A1:Z30").Find(What:=nimike) loytoo.Delete End With End Sub
Mod. lisäsi kooditagit!
Missä tuossa koodissa käsketään poistaa rivi? Siinähän haetaan nimike ja poistetaan se. Tietenkään se ei tee jotain muuta kuin mitä käsket tehdä.
Toisaalta koko koodi ihmetyttää muutenkin. Miksi kiinteä 50/30 rivin rajoitus?
Hei!
Siis rivi poistetaan kohdassa loytoo.Delete. Ainakin Sheet1:ssä tämä toimii, eli poistaa solun josta nimike löytyy ja samalla poistuu koko kyseisen taulukon rivi.
Miten sitten saisin koodin toimimaan ilman kiinteitä rivirajoituksia?
Moi jannekala!
vaikkapa näin
Private Sub CommandButton1_Click() nimike = InputBox("Minkä tuotenimikkeen tahdot poistaa?") On Error Resume Next With Taul1.Range("A1:" & Taul1.UsedRange.SpecialCells(xlCellTypeLastCell).Address) Taul1.Rows(.Find(What:=nimike).Row).Delete End With With Taul2.Range("A1:" & Taul2.UsedRange.SpecialCells(xlCellTypeLastCell).Address) Taul2.Rows(.Find(What:=nimike).Row).Delete End With If Err <> 0 Then Err.Clear On Error GoTo 0 End If End Sub
Aihe on jo aika vanha, joten et voi enää vastata siihen.