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 SubMod. 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 SubAihe on jo aika vanha, joten et voi enää vastata siihen.