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