Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Spalte einfügen / VBA-Code anpassen

Spalte einfügen / VBA-Code anpassen
02.09.2013 07:29:34
Jürgen
Guten Morgen,
wer kann mir an Hand folgendem Code zeigen, wenn links im Tabellen-Blatt manuell eine Spalte hinzugefügt wurde. Wo im Code müssen Anpassungen vorgenommen werden. Damit das Makro wieder korrekt funktioniert.
Sub Datum()
'** Einsortieren nach Datum
Dim i As Integer, j As Integer
Dim lngAnzZeilenWs1 As Long, lngAnzZeilenDat As Long, lngAnzZeilenName As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = Worksheets("Tabelle1")
Set ws2 = Worksheets("Tabelle2")
lngAnzZeilenWs1 = ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row 'letzte genutzte Zeile in Tabelle   _
_
1 auslesen
j = 9 'Erste Zeile Bereich1 mit einem Wert
For i = 10 To lngAnzZeilenWs1
If IsDate(ws1.Cells(i, 6)) Then
ws1.Rows(i).Copy
Do
If ws2.Cells(j, 6) > ws1.Cells(i, 6) Then
ws2.Rows(j).Insert shift:=xlUp
Exit Do
End If
If ws2.Cells(j, 6) = "" Then
ws2.Rows(j).Insert shift:=xlDown
Exit Do
End If
j = j + 1
Loop Until ws2.Cells(j, 1) = "" 'Schleife beenden sobald in Spalte A die erste Zelle  _
ohne Inhalt kommt
End If
Next i
Application.CutCopyMode = False
End Sub

vielen Dank im Voraus
Jürgen

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Frage neu formuliert
02.09.2013 07:40:59
Jürgen
Guten Morgen,
wer kann mir an Hand folgendem Code zeigen, wenn links IN BEIDEN Tabellen-Blättern manuell eine Spalte hinzugefügt wurde. Wo im Code müssen Anpassungen vorgenommen werden. Damit das Makro wieder korrekt funktioniert.
Sub Datum()
'** Einsortieren nach Datum
Dim i As Integer, j As Integer
Dim lngAnzZeilenWs1 As Long, lngAnzZeilenDat As Long, lngAnzZeilenName As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = Worksheets("Tabelle1")
Set ws2 = Worksheets("Tabelle2")
lngAnzZeilenWs1 = ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row 'letzte genutzte Zeile in Tabelle   _
_
_
1 auslesen
j = 9 'Erste Zeile Bereich1 mit einem Wert
For i = 10 To lngAnzZeilenWs1
If IsDate(ws1.Cells(i, 6)) Then
ws1.Rows(i).Copy
Do
If ws2.Cells(j, 6) > ws1.Cells(i, 6) Then
ws2.Rows(j).Insert shift:=xlUp
Exit Do
End If
If ws2.Cells(j, 6) = "" Then
ws2.Rows(j).Insert shift:=xlDown
Exit Do
End If
j = j + 1
Loop Until ws2.Cells(j, 1) = "" 'Schleife beenden sobald in Spalte A die erste Zelle  _
ohne Inhalt kommt
End If
Next i
Application.CutCopyMode = False
End Sub
vielen Dank im Voraus
Jürgen

Anzeige
AW: Frage neu formuliert
02.09.2013 08:12:45
Toumas
Hallo Jürgen,
ich bin leider nur absoluter Anfänger, aber ich vermute mal, dass du
die Cells Anweisungen anpassen musst.
Cells(5, 4) wäre ja die Zelle D5, somit müsste dann (wenn ich es richtig verstehe) dein cells(j,6)
um die Anzahl der Spalten,die du eingefügt hast erhöht werden.. also cells (j,7) (wenn du eine Spalte einfügst) z.B.
Ich versuch es momentan nach dem Try&Error verfahren.
Einfach die Werte erhöhen und das Makro in Einzelschritten durchlaufen lassen, dann sieht man ja was passiert. ;-)
Aber wie gesagt, ich bin Anfänger, daher bitte ich dann doch noch die Profis darauf zu schauen.
Viele Grüße
Toumas

Anzeige
AW: Frage neu formuliert
02.09.2013 08:21:54
Jürgen
Hallo Toumas,
danke für Deinen Beitrag, ja hab ich auch schon versucht, auch die Wert um 1 zuerhöhen oder den nächsten Buchstaben, funktioniert nicht.
Dank Dir nochmal und wünsch Dir noch einen schönen Tag.
Gruß Jürgen

AW: Frage neu formuliert
02.09.2013 08:24:37
Jürgen
Hallo Toumas,
danke für Deinen Beitrag, ja hab ich auch schon versucht, auch die Wert um 1 zuerhöhen oder den nächsten Buchstaben, funktioniert nicht.
Dank Dir nochmal und wünsch Dir noch einen schönen Tag.
Gruß Jürgen

AW: Frage neu formuliert
02.09.2013 08:36:23
Toumas
Hallo Jürgen,
ich hab es mal getestet...
wenn ich den Befehl : If IsDate(ws1.Cells(i, 6)) Then...
auf If IsDate(ws1.Cells(i, 7)) Then... ändere dann frägt mir das Makro die Spalte G und nicht mehr F ab......
wäre das so in deinem Sinne ?
Ich habe die Frage vorsichtshalber offen gelassen.

Anzeige
AW: Frage neu formuliert
02.09.2013 08:42:00
Toumas
Nachtrag :
man müsste dann noch

If ws2.Cells(j, 6) > ws1.Cells(i, 6) Then und If ws2.Cells(j, 6) = "" Then
anpassen....
If ws2.Cells(j, 6) = "" Then dürfte wohl dann : If ws2.Cells(j, 7) = "" Then
und
If ws2.Cells(j, 6) > ws1.Cells(i, 6) Then dürfte dann wohl : If ws2.Cells(j, 7) > ws1.Cells(i, 7) Then
werden....
Frage immer noch offen gelassen...
Gruß
Toumas

AW: Frage neu formuliert
02.09.2013 08:37:33
hary
Moin
Vergib der SpalteF(6) einen Namen. Z.B. immer
Aufruf dann so:
If IsDate(ws1.Cells(i, Range("immer").Column))

Dann hast du immer die gleiche Spalte.
Was ist mit der Losung von Steffen im alten Thread?
gruss hary

Anzeige
AW: Frage neu formuliert
02.09.2013 08:48:40
Jürgen
Guten Morgen Harry,
Danke, Danke, auch Danke für deinen gestrigen Beitrag ich hatte auch mehere mal geantwortet auch irgendwelchen Technischen Problemen konnte ich oder mein PC Antwort nicht senden nach dem 3. Versuch habe ich auf gegeben.
also Deine Lösung ist gut (hab ich noch nicht ausprobiert)
aber ich möchte DAZU LERNEN und es ersteinmal manuell machen und wenn ich das dann kapiert habe werde ich mit großer Freude Dein Lösungs-Beispiel ein bauen.
Meine Frage nochmal wo im Code muss welche Variablen angepasst werden, damit das Makro mit einer Spalte mehr in beiden Tabellen-Blättern wieder funktioniert.
Mit besten Grüßen
Jürgen

Anzeige
AW: Frage neu formuliert
02.09.2013 08:57:18
hary
Moin Juergen
Zitat:
"Meine Frage nochmal wo im Code muss welche Variablen angepasst werden, damit das Makro mit einer Spalte mehr in beiden Tabellen-Blättern wieder funktioniert."
Also du jetzt die Werte in SpalteF = 6 stehen. Nun fuegst du links von SpalteF eine Spalte ein.
Nun soll automatisch aus der 6 eine 7 werden richtig?
Und das geht am einfachsten mit einem benannten Bereich. Bleibt immer gleich.
Ansonsten muesstest du beim oeffnen der Mappe die belegten Spalten zaehlen und beim Makro ausfuehren vergleichen.
gruss hary

AW: Bsp.-Mappe
02.09.2013 09:12:22
hary
Moin Juergen
Hier Bsp.-Mappe mit benanntem Bereich:
https://www.herber.de/bbs/user/87121.xlsm
gruss hary

Anzeige
AW: Frage neu formuliert
02.09.2013 08:46:52
Bastian
Hallo Jürgen,
Nur zur Erklärung:
Die "Buchstaben" sind Variablen. Schau mal ganz oben in deinem Code. Dort werden die Variablen deklariert:
Dim i as integer, j as integer
Cells(i, 6) bedeutet dann: Zelle in Zeile i und Spalte 6
In Deinem Makro ist z.B. die Variable i die Zählvariable für eine Schleife.
Die Variable startet mit dem Wert 10 und wird bei jedem Schleifendurchlauf um 1 erhöht, bis zur Nummer der letzten Zeile mit einem Eintrag.
Gruß, Bastian

AW: Frage neu formuliert
02.09.2013 08:52:32
Jürgen
Hallo Bastian,
ich schau mir das jetzt mal in aller Ruhe an.
Ich melde mich auf jeden Fall nochmal
D A N K E
Gruß Jürgen
Anzeige

320 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige