Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1224to1228
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Erneuern benutzter Spalten

Erneuern benutzter Spalten
johannes
Hallo
Ich füge in mein Excel per VBA immer 2 Spalten hinzu um den alten stand zu sichern.
Jetzt ist es jedoch so das ich mittlerweile am rechten Rand angekommen bin und es dann den Fehler 400 gibt.
Um dies zu verhindern habe ich folgenden Code
If Cells.End(xlToRight).Column > 250 Then
Columns("IL:IV").Delete shift:=xlShiftToRight
'Range(Cells(1, 250), Cells(Rows.count, 256)).Delete shift:=xlShiftToRight
End If
Der Code macht auch das was er soll jedoch merkt Excel intern nicht das wieder was gelöscht wurde und so bekomme ich den Fehler 400 wieder.
Gibt es eine Funktion mit der ich excel sagen kann es soll sich vollkommen neu aktualisieren?
BG
johannes

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Erneuern benutzter Spalten
24.08.2011 10:51:23
Dirk
Hallo!
Probier doch mal:
xlShiftToLeft
Gruss
Dirk aus Dubai
AW: Erneuern benutzter Spalten
24.08.2011 10:58:10
johannes
Hallo,
Hilft leider nicht.
Gruss
johannes
AW: Erneuern benutzter Spalten
24.08.2011 11:06:34
Henrik
Hallo Johannes,
ich wußte gar nicht, dass diese Zeile funktioniert.
Columns("IL:IV").Delete shift:=xlShiftToRight
Da sollte, wenn überhaupt, xlShiftToLeft stehen (wie Dirk bereits erwähnt).
Ist denn deine Reihenfolge richtig?
Also erst letzte Spalte ermitteln, wenn zuviel dann löschen und dann einfügen?
und nicht: letzte Spalte ermitteln, einfügen, dann löschen?
Gruß Henrik
VBA: Spalten über Spaltenende einfügen
24.08.2011 11:06:37
NoNet
Hallo Johannes,
teste mal folgenden Code (z.B. in einem leeren Blatt), der bei mir fehlerfrei funktioniert - ohne "Error 400" :
Sub SpaltenEinfuegen()
Dim lngS As Long, lngAS As Long
lngAS = Int(Columns.Count / 10) 'Anzahl Spalten bei 10 Einfügeschritten
'10 mehr als maximale Spaltenanzahl
For lngS = 1 To Columns.Count + 10 Step lngAS
If [A1].End(xlToRight).Column > Columns.Count - lngAS Then
'Stop 'Hier erfolgt der Debug-Modus im Code - fortsetzen per F8-Taste
Columns(Columns.Count - lngAS + 1).Resize(, lngAS).Delete shift:=xlShiftToRight
'Range(Cells(1, 250), Cells(Rows.count, 256)).Delete shift:=xlShiftToRight
End If
Columns(1).Resize(, lngAS).Insert shift:=xlToRight
[A1] = "Spalte :"
[B1].Resize(, lngAS - 1) = lngS
Next
End Sub
Gruß, NoNet
Exceltreffen 28.-30.10.2011 in Chemnitz
Ein Treffen für alle Excel-Freunde und Besucher deutschsprachiger Excel-Foren.
Alle Infos - Programm - Anmeldung - Teilnehmerliste etc. gibt es auf
http://www.exceltreffen.de/index.php?page=211
Wir freuen uns auf euch...

Anzeige
AW: VBA: Spalten über Spaltenende einfügen
24.08.2011 13:15:38
johannes
Hallo NoNet.
Danke dein Code funktioniert auch bei mir. Habe dadurch festgestellt das es funktioniert wenn man das Makro direkt ausführt aber nicht wenn man es über einen Button startet wenn der Button auf der kopierenden spalte liegt. Da ich jedoch keinen Button in meiner Anwendung habe, zumindest keinen der auf der Arbeitsfläche liegt habe ich mit
durch

Dim sha As Shape
For Each sha In Me.Shapes
Debug.Print sha.Name
Next
alle shapes ausgegeben.
Und siehe da. Es gibt einige Drop Down. Ich kann mir das nur erklären das die vom Autofilter kommen.
Hier nochmals mein Code:

'AutoFilter deaktivieren
Tabelle2.AutoFilterMode = False
Dim sha As Shape
For Each sha In Me.Shapes
' If Not InStr(1, sha.Name, "com")  0 Then
Debug.Print sha.Name
sha.Delete
'End If
Next
If Range("IL1").Value  "" Then
Columns("IJ:IV").Delete 'shift:=xlShiftToLeft
'Range(Cells(1, 250), Cells(Rows.count, 256)).Delete shift:=xlShiftToRight
End If
'Zwei Spalten einfügen
Columns("H:I").Insert
'Aktueller Status in die leeren Spalten kopieren
Columns("D:E").Copy Columns("H:I")
'noch etwas anderer nebensächlicher Code der ja funktioniert und in dem kein drop down etc  _
verwendet wird
Tabelle2.Rows.AutoFilter
Gruß
johannes
Anzeige
AW: VBA: Spalten über Spaltenende einfügen
24.08.2011 16:55:10
Luschi
Hallo Johannes,
in der Tat, in Excel 2003 werden die AutoFilter- Dropdowns als Shapes erkannt und aufgelistet:
Drop Down 1
Drop Down 2
Drop Down 3 usw.
In Excel 2007 & 2010 passiert das nicht.
Gruß von Luschi
aus klein-Paris
AW: VBA: Spalten über Spaltenende einfügen
24.08.2011 17:02:44
johannes
Hallo,
Ja. Und wie werde ich diese los?
Autofilter ausschalten alleine bringt nichts und shape.delete hilft mir auch nicht.
Nur wenn ich auf speichern klicke scheint excel intern "aufzuräumen" aber ich kann nicht die Datei überschreiben per code.
Hat sonst irgenwer eine Idee?
Gruß johannes
AW: VBA: Spalten über Spaltenende einfügen
25.08.2011 09:55:49
johannes
Lösung:
ActiveSheet.UsedRange
Damit aktualisiert sich der used range und alles ist so wie es soll ;)
Anzeige

157 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige