Print side | Luk vindue

Loop som reagere på tommeceller

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=959
Udskrevet den: 18.Maj.2024 kl. 09:27


Emne: Loop som reagere på tommeceller
Besked fra: Valdemar2202
Emne: Loop som reagere på tommeceller
Posteringsdato: 06.Nov.2012 kl. 16:04
Hej

Jeg har et problem med at finde en loop udgave til VBA som først reagere når den finder et tomt felt.

Jeg har denne her formel som ser på celler og flytter dem til højre indtil den rammer en tom. Det skal være omvendt hvor den først flytter dem når den rammer en tom celler i fx. kolonne A

Sub Makro3()
home = ActiveCell.Address
homeArk = ActiveSheet.Name

Do Until IsEmpty(ActiveCell)
  ActiveCell.Offset(1, 0).Select
Loop
emty = ActiveCell.Offset(-1, 0).Address

    Range(home, emty).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Cut
    Range(Selection, Selection).Offset(0, 1).Select
    ActiveSheet.Paste
    Range(Selection, Selection).Offset(0, 0).Select
    
Sheets(homeArk).Select
Range(home).Select
End Sub

Mvh
Jens



Svar:
Besked fra: Allan
Posteringsdato: 07.Nov.2012 kl. 11:01
Hej Jens,
 
Jeg tror ikke jeg helt kan forstå hvad du mener.
Din kode søger i en kolonne og hvis den finder en tom celle kopierer den alle celler over sig selv og til højre, og rykker dem en kolonne til højre.
 
Hvad skal der ændres?
 
Jeg har forsøgt at ændre din makro til at kunne køres flere gange (hvis det ønskes)
 
Sub Makro3()
home = ActiveCell.Address
homeArk = ActiveSheet.Name
emty = Range(home).End(xlDown).Address
    Range(home, emty).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Cut
    Range(Selection, Selection).Offset(0, 1).Select
    ActiveSheet.Paste
    Range(Selection, Selection).Offset(0, 0).Select
   
Sheets(homeArk).Select
Range(home).Select
End Sub
 
 
//Allan


Besked fra: Valdemar2202
Posteringsdato: 07.Nov.2012 kl. 11:47
Hej Allan,

Det var sikkert ikke forklaret godt nok. 

Du har ret i at når den finder en tom celle så kopiere den alle celler over sig selv og til højre, og flytte en kolonne til højre. 

Jeg vil have den til at når den finder en tom celle så kopiere den alle tomme celler og flytter dem en kolonne til højre. Altså omvendt i forhold til hvad den gør i dag. Det skal den gøre hele vejen ned i rækken.

Håber det gav mere mening

Mvh
Jens


Besked fra: Allan
Posteringsdato: 08.Nov.2012 kl. 14:02
Hej Jens,
 
Så prøver vi med denne, som forhåbentlig kan klare ticket. Wink
 
Sub Makro3()
On Error GoTo EndMakro
home = ActiveCell.Address
homeArk = ActiveSheet.Name
For Each TomCelle In Range("A1:A100")
    If TomCelle.Value = "" Then
        TomCelle.Select
        Range(Selection, Selection.End(xlToRight)).Select
        Selection.Cut
        Range(Selection, Selection).Offset(0, 1).Select
        ActiveSheet.Paste
        Range(Selection, Selection).Offset(0, 0).Select
    End If
Next TomCelle
EndMakro:
Application.CutCopyMode = False
Sheets(homeArk).Select
Range(home).Select
End Sub
 
//Allan


Besked fra: Valdemar2202
Posteringsdato: 08.Nov.2012 kl. 15:48
Du er jo genial mand. Det dur bare.

Tak for hjælpen

Skal man give points nogen steder på dette forum?

Mvh
Jens


Besked fra: Allan
Posteringsdato: 08.Nov.2012 kl. 18:08
Velbekomme Jens og tak fordi du meldte tilbage.
Points er ikke vigtigt, men brug Tak (0) Tak knappen alligevel LOL
 
//Allan


Besked fra: Valdemar2202
Posteringsdato: 09.Nov.2012 kl. 15:28
Hej Allan,

Det ser ved nærmere eftertanke ud til at den ikke helt virker som den skulle. Igen fordi jeg ikke har beskrevet det godt nok. Hvis en celle i kolonne A er tom så kopiere den cellen i kolonne b og sætter den ind i cellen i kolonne c. Dvs. at den overskriver hvad der står i c. Hvordan får jeg den til at kopiere hvad der står i kolonne b, c, d,e, f,g og flytte det hele en celle til højre altså uden overskrivning. 


Besked fra: Allan
Posteringsdato: 12.Nov.2012 kl. 15:21
Hej Jens,
 
Jeg kigger lige på det.
 
//Allan



Print side | Luk vindue