Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA poistaa virheellisesti sarakkeen??

jannekala [08.04.2013 19:48:29]

#

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!

Grez [08.04.2013 21:40:02]

#

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?

jannekala [09.04.2013 17:02:27]

#

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?

neau33 [10.04.2013 11:33:31]

#

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

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta