Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Luvun siirto seuraavaan vapaaseen soluun

Heglund [14.02.2013 00:24:37]

#

Noniin, tässä sitten hieman haasteellisempi tehtävä! syötän luvun soluun D3 ja painan Siirrä arvo -nappia. Solussa D3 oleva arvon pitäisi siirtyä napin painalluksella ensimmäiselle vapaalle riville alueella D10:D30. Solu D3 täytyy tyhjentää siirron jälkeen. Kun alue D10:D30 täyttyy, täytyy poistaa 1. arvo ja siirtää kaikkia muita arvoja yksi rivi ylöspäin ja kirjoittaa viimeiseen soluun (D30) uusi arvo.

Olen lähtenyt ratkaisemaan tehtävää tällä tavalla:

Sub VBA()
    Dim Luku As Integer
    If IsNumeric(Cells(3, 4).Value) < 0 = False Then
        MsgBox "Syötä Arvo välillä 0-100!", vbCritical
        Exit Sub
    End If
    If IsNumeric(Cells(3, 4).Value) <= 100 Then
        Luku = Range("D3").Value
    End If
    Do
        Cells(3, 4).Active
        Range("D30:D10").Select
        Loop While Range("D30:D10").Value <> ""
End Sub

Debug tulee kohdassa Cells(3, 4).Active
Millainen macro täytyy tehdä tuolle siirtonapille ja miten tuo Do Loop While toimii?

Mod. lisäsi kooditagit!

neau33 [14.02.2013 09:57:59]

#

Heglund kirjoitti:

Vaativaa osaamista VBA

koko paska on aivan perus kamaa...

Private Sub CommandButton1_Click()

    If Not IsNumeric(Cells(3, 4).Value) _
    Or Val(Cells(3, 4).Value) < 0 _
    Or Val(Cells(3, 4).Value) > 100 _
    Or Cells(3, 4).Text = "" Then
        MsgBox "Syötä arvo väliltä 0 - 100"
        Cells(3, 4).Clear
        Cells(3, 4).Select
        Exit Sub
    End If

    For Each solu In Range("D10:D30")
        If solu.Text = "" Then
            solu.Value = Cells(3, 4).Value
            Cells(3, 4).Clear
            solu.Select
            Exit For
        End If
    Next

End Sub

Sinun kannattaisi nyt hieman tutkailla, että miksiköhän oheinen koodi toimii ja oma viritelmäsi ei toimi

Vastaus

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

Tietoa sivustosta