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 SubDebug tulee kohdassa Cells(3, 4).Active
Millainen macro täytyy tehdä tuolle siirtonapille ja miten tuo Do Loop While toimii?
Mod. lisäsi kooditagit!
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 SubSinun kannattaisi nyt hieman tutkailla, että miksiköhän oheinen koodi toimii ja oma viritelmäsi ei toimi
Aihe on jo aika vanha, joten et voi enää vastata siihen.