23. april 2012 - 16:25
Der er
2 kommentarer
Kør Macro hvis der står noget i bestemte celler
Hej Eksperter
Jeg har et lille problem som jeg ikke lige kan se hvordan jeg skal løse, da jeg ikke er super god til Excel VBA.
Jeg har følgende kode som gør det som den skal:
Sub sorterEks()
' sorterEks Makro
If Range("C5").Value > "" Then
Range("C5").Select
Selection.Cut
Range("B5").Select
ActiveSheet.Paste
Range("A6:J6").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If
End Sub
Det jeg vil have en kode til er at gøre dette for hver gang der står noget i den næste celle, som ikke nødvendigvis er den nedenstående celle. men måske kan komme et par celler længere nede.
Desuden mener jeg ikke at dette er den optimale løsning, da jeg skal gøre ovenstående for både D5, E5, F5, G5, I5, J5. Er det muligt på nogen måde at lave en løkke eller lign. for at gøre arbejdet nemmere og ikke mindst mere overskueligt?
29. april 2012 - 11:29
#1
Hej,
Jeg har kigget på din kode og forsøgt at lægge den ind i et regneark, men jeg kan ikke helt forstå hvad formålet er?
Jeg har alligevel prøvet at lave en loop-funktion ud fra det du har beskrevet og den er indsat herunder.
Du skal dog huske, at køre den trinvist, da den ellers kan køre uendeligt, eftersom jeg ikke ved hvilken kolonne jeg kunne bruge som reference-punkt. Jeg har i nedenstående eksempel valgt, at gå ud fra at der altid vil stå noget i kolonne 1 og bruger derfor denne til at afgøre hvor længe loopet skal køre.
Udover det har jeg som nævnt lidt svært ved at regne ud hvad resultatet skal blive og derfor kan jeg heller ikke afgøre om mit forslag fungerer, men ellers kan du sende mig en mail med et par skærmbilleder eller en bid af filen, så jeg kan sætte mig ind i, hvad der skal ske når koden køres...
Herunder mit forslag...
Sub sorterEks()
Dim RK As Long
Dim RK1 As Long
' sorterEks Makro
RK = 5
RK1 = RK + 1
Do
If Cells(RK, 3) > "" Then
Cells(RK, 3).Select
Selection.Cut
Cells(RK, 2).Select
ActiveSheet.Paste
Range(Cells(RK1, 1), Cells(RK1, 10)).Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
RK = RK + 1
RK1 = RK1 + 1
Else
RK = RK + 1
RK1 = RK1 + 1
End If
Loop Until Cells(RK, 1) = ""
End Sub
Håber det kan bruges og ellers vender du bare frygteligt tilbage :-)
Med venlig hilsen
Henrik