WinFuture-Forum.de: Excel Makro Frage - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Office
Seite 1 von 1

Excel Makro Frage Wie auf aktuelle Zelle verweisen?


#1 Mitglied ist offline   MiG[Anubis 

  • Gruppe: aktive Mitglieder
  • Beiträge: 84
  • Beigetreten: 19. September 05
  • Reputation: 0
  • Wohnort:Bergisch Gladbach

  geschrieben 27. November 2007 - 14:47

Hallo zusammen,

ich habe folgendes Makro aufzeichnen lassen und würde es nun gerne auch auf andere Zeilen anwenden lassen können, d.h. alle Zellen müssen dynamisch adressiert werden.
Wie stelle ich das an?

Hier ist mein Makro, die Startzelle ist B6:
Sub MakroFinal()
'
' MakroFinal Makro
' Makro am 27.11.2007 von hennmic aufgezeichnet
'

'
	Range("B6").Select
	Selection.EntireRow.Insert
	Selection.EntireRow.Insert
	Selection.EntireRow.Insert
	Rows("9:9").Select
	Selection.Cut
	Rows("6:6").Select
	ActiveSheet.Paste
	ActiveWindow.ScrollColumn = 2
	ActiveWindow.ScrollColumn = 3
	ActiveWindow.ScrollColumn = 4
	ActiveWindow.ScrollColumn = 6
	ActiveWindow.ScrollColumn = 7
	ActiveWindow.ScrollColumn = 9
	Range("J6:P6").Select
	Selection.Cut
	ActiveWindow.ScrollColumn = 5
	ActiveWindow.ScrollColumn = 1
	Range("C7").Select
	ActiveSheet.Paste
	ActiveWindow.ScrollColumn = 2
	ActiveWindow.ScrollColumn = 7
	ActiveWindow.ScrollColumn = 9
	ActiveWindow.ScrollColumn = 10
	ActiveWindow.ScrollColumn = 12
	ActiveWindow.ScrollColumn = 14
	ActiveWindow.ScrollColumn = 15
	ActiveWindow.ScrollColumn = 16
	Range("Q6:V6").Select
	Selection.Cut
	ActiveWindow.ScrollColumn = 15
	ActiveWindow.ScrollColumn = 7
	ActiveWindow.ScrollColumn = 5
	ActiveWindow.ScrollColumn = 2
	ActiveWindow.ScrollColumn = 1
	Range("C8").Select
	ActiveSheet.Paste
	ActiveWindow.ScrollColumn = 4
	ActiveWindow.ScrollColumn = 5
	ActiveWindow.ScrollColumn = 7
	ActiveWindow.ScrollColumn = 8
	ActiveWindow.ScrollColumn = 9
	ActiveWindow.ScrollColumn = 11
	ActiveWindow.ScrollColumn = 12
	ActiveWindow.ScrollColumn = 13
	ActiveWindow.ScrollColumn = 14
	ActiveWindow.ScrollColumn = 15
	ActiveWindow.ScrollColumn = 16
	ActiveWindow.ScrollColumn = 17
	ActiveWindow.ScrollColumn = 18
	Range("W6:AF6").Select
	Selection.Cut
	ActiveWindow.ScrollColumn = 9
	ActiveWindow.ScrollColumn = 2
	ActiveWindow.ScrollColumn = 1
	Range("J6").Select
	ActiveSheet.Paste
End Sub


Ich glaube, dass ich auch die Zeilen mit "ActiveWindow.ScrollColumn = X" löschen kann, bin mir auber nicht sicher.

Ich verwende Office 2003.

Dieser Beitrag wurde von MiG[Anubis bearbeitet: 27. November 2007 - 14:49

0

Anzeige



#2 Mitglied ist offline   dastriebel 

  • Gruppe: aktive Mitglieder
  • Beiträge: 439
  • Beigetreten: 11. August 06
  • Reputation: 1
  • Wohnort:Schweiz, Breitenbach

geschrieben 03. Dezember 2007 - 15:07

Beitrag anzeigenZitat (MiG[Anubis: 27.11.2007, 15:47)

Ich glaube, dass ich auch die Zeilen mit "ActiveWindow.ScrollColumn = X" löschen kann, bin mir auber nicht sicher.

Kast Du weg lassen, denn dies verschiebt nur den Bildschirm, dann bleibt noch folgendes

	Range("B6").Select
	Selection.EntireRow.Insert
	Selection.EntireRow.Insert
	Selection.EntireRow.Insert
	
	Rows("9:9").Select
	Selection.Cut
	
	Rows("6:6").Select
	ActiveSheet.Paste
	
	Range("J6:P6").Select
	Selection.Cut
	
	Range("C7").Select
	ActiveSheet.Paste
	
	Range("Q6:V6").Select
	Selection.Cut
	
	Range("C8").Select
	ActiveSheet.Paste
	
	Range("W6:AF6").Select
	Selection.Cut
	
	Range("J6").Select
	ActiveSheet.Paste


Was meisnt Du genau mit dynamisch, bezogen auf den Stadort des Cursors, beim start des Makros?
0

#3 Mitglied ist offline   camo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 26
  • Beigetreten: 24. September 07
  • Reputation: 0

geschrieben 21. Februar 2008 - 16:07

Hi! Ich habe etwas ähnliches gemacht, in dem unter jeder Zeile wo das wort "ERGEBNIS" steht, eine Zeile eingefügt wird, in der "PROZ.ABWEICHUNG" steht. Is wahrscheinlich nich besonders professionell gemacht, aber es geht ;-)
Vielleicht hilfts dir ja weiter...



Range("A1").Select
Cells.Find(What:="ERGEBNIS", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate

Do While i <= Cells(1, 1) + 1 'Schleife wird so oft ausgeführt wie es Datensätze gibt (Wird durch formel in A1 errechnet)
    
    Cells(ActiveCell.Row + 1, ActiveCell.Column).Activate 'Eine Zelle weiter unten auswählen
    ActiveCell.EntireRow.Insert 'Ganze Reihe einfügen
    ActiveCell = "PROZ. ABWEICHUNG" 'in diese "PROZ. ABWEICHUNG" eintragen
    temp_zelle = ActiveCell.Address
    
  
    
    Cells.FindNext(After:=ActiveCell).Activate 'nächste Zelle finden, wo "ERGEBNIS" steht

         If Cells(ActiveCell.Row + 1, ActiveCell.Column) = "" Then 'Wenn die nächste Zeile Leer ist, Schleife beenden
            i = Cells(1, 1)
         End If
    
    i = i + 1
Loop




P.S. Ist nur ein ausschnitt aus einem längerem Code, also kanns ein, dass das nich ganz rund läuft ^^





Du kannst übrigens statt
    Range("C8").Select
    ActiveSheet.Paste


einfach das hier nehmen. Dazu muss excel die zelle nicht jedes mal extra auswählen.

    Range("C8").PasteSpecial



Gruß,
Camo

Dieser Beitrag wurde von camo bearbeitet: 21. Februar 2008 - 16:07

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0