Excel 2003: Kopier Makro erstellen

Kneppi

Cadet 4th Year
Registriert
Feb. 2009
Beiträge
85
Hallo Zusammen,

ich möchte ein Makro aufzeichnen und nutzen, welches mir die unten erklärte Funktion umsetzt:


In der Spalte A stehen u.a. die folgenden Informationen, Spalte B ist frei:

A1 = 128 Bodenordnung und Grenzregulierung
A2 = 129 Grundstückskosten, sonstiges
A3 = 130 Freimachen
A4 = 131 Abfindungen
usw.

Ich möchte nun ein Makro aufnehmen, was nun die ersten drei Zahlen in der Spalte A belässt und den Text in Spalte B rüberschiebt.

Ich hatte es wie folgt als Makro aufgenommen:

Ausgangsposition: A1 -> Makroaufzeichnung gestartet

Dann Abläufe aufgenommen:

Taste: F2
Taste: Pos1
Pfeil nach rechts: 3x
Taste: Entf
Text nach rechts markiert: Shift+Ende
Text ausgeschnitten: Shift+Entf
TAB-Taste betätigt, damit in Spalte B gewechselt
Shift+Einfg
Taste ENTER betätigt

Aufnahme beendet!

Jetzt ist der Cursor in der Zelle A2.

Jetzt wollte ich dieses Makro in der Spalte A2, wieder mit dem gespeicherten Tastenkürzel aufrufen und die Daten in der Zeile 2 entsprechend aufteilen lassen, wie in spalte 1 - das funktioniert nun aber nicht, es werden die Werte aus Spalte 1 eingesetzt

Was mache ich falsch?

Viele Grüße
Kneppi
 
theoretisch sieht das richtig aus...
Ergänzung ()

geh mal auf "extras" makros --> makros und wähl bei deinem makro "bearbeiten" und kopier mla den script!
 
Kannst du mal das Makro veröffentlichen, nicht die Datei!?

Soeinfach wird das sicherlich nicht funktionieren. Du mußt per VBA den String ( Zelleninhalt) auseinandernehmen. Ich könnte dir das mal im Code umsetzen.

Alt+f11 drücken, rechts in den Modulen ist dann der Code dazu.
 
Hallo,

das Makro sieht so aus.




Sub Makro3()
'
' Makro3 Makro
' Makro am 16.01.2011 von aufgezeichnet
'
' Tastenkombination: Strg+a
'
ActiveCell.FormulaR1C1 = "128"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "Bodenordnung und Grenzregulierung"
ActiveCell.Offset(1, -1).Range("A1").Select
End Sub




Irgend etwas ist da nicht richtig.


Viele Grüße
Kneppi
 
Also bei mir sieht es so aus

Sub Makro3()
'
' Makro3 Makro
' Makro am 16.01.2011 von aufgezeichnet
'
' Tastenkombination: Strg+a

'genutze Länge bestimmen
A = ActiveSheet.UsedRange.Rows.Count

For i = 1 To A
'string einlesen
temp = ActiveSheet.Range("A" & i).Value
'linken Teil extrahieren
tempa = Left(temp, 4)
'rechten Teil extrahieren
tempb = Len(temp)
tempb = Right(temp, tempb - 4)

'Strings kopieren
ActiveSheet.Range("C" & i).Value = tempa
ActiveSheet.Range("D" & i).Value = tempb
Next
End Sub


Es funktioniert wie folgt.

1. Spaltenlänge mit UsedRange bestimmen
In einer For - Schleife
2. String einlesen
3. linken Teil (Nummern) extrahieren, (ich bin davon ausgegangen das die Zahlen immer 3-stellig sind)
4.Rechten Teil (Text) extrahieren
5 Text und Nummer kopieren

Solange bis alle Zeilen Abgearbeitet

Ende


Wenn du fragen hast frag.

Edit. mit dem Usedrange kann es zu Problem kommen, wenn du in dem Tabellenblatt unter den zu bearbeitenden Zeilen noch andere Inhalte hast
 
Zuletzt bearbeitet:
Nabend,

ich habe es ausprobiert, die Zahlen werden alle in eine Zelle Kopiert, anstatt des Textes wird nur eine Zahl in eine Weiter Zelle übertragen.

Ist jetzt nicht so schlimm, ich habe alles per Hand angepasst.

Aber vielen Dank.


Einen schönen Abend
Kneppi
 
Zurück
Oben