Avatar billede nnccnn Nybegynder
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?
Avatar billede H_Klein Novice
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
Avatar billede nnccnn Nybegynder
20. marts 2013 - 15:50 #2
Det virkede beklager det meget sene svar, kan du sende et svar så jeg kan give dig dine point?:)

Mange tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester