Thema Datum  Von Nutzer Rating
Antwort
Rot korrekt Spalten löschen wenn...
01.02.2017 08:28:18 Peter Wrong
Solved
04.02.2017 01:28:53 gast
NotSolved

Ansicht des Beitrags:
Von:
Peter Wrong
Datum:
01.02.2017 08:28:18
Views:
1005
Rating: Antwort:
 Nein
Thema:
korrekt Spalten löschen wenn...
Verzeiht mir den Mehrfach-Post vorab, ich habe selbst keinen Schimmer wie das passieren konnte. [b]Aufgabe:[/b] Mit meinem VBA-Code möchte ich bei jedem Aufruf meiner Arbeitsmappe existierende Spalten löschen, in denen in einer Zelle (in immer der gleichen Zeile) eine bestimmte Überschrift steht. Das ganze habe ich mit einer Schleife implementiert, da die Überschriften eine variable Zahl enthalten. Diese Zahl kann maximal 6 sein (s. Code, es soll maximal eine Anzahl von 6 BHKW-Modulen geben). Das Löschen ist notwendig, weil ebenfalls bei jedem Aufruf der Arbeitsmappe so viele Spalten hinzugefügt werden sollen, wie die Anzahl an BHKW-Modulen gewählt wurde. [b]Problem:[/b] Im Grunde funktioniert das Löschen der Spalten ganz gut, bis auf einen kleinen Haken: Wird eine Spalte gelöscht, rutscht die Spalte rechts von dieser gelöschten Spalte an ihre Stelle. Der Parameter, der die Schleife durchläuft, rückt allerdings eine Spalte weiter. Dadurch werden diese "verrutschten" Spalten nicht mehr überprüft und es bleiben letztendlich Spalten stehen, die eigentlich gelöscht werden sollten. Also sollte dieser Parameter für den Fall (if-Abfrage), dass eine Spalte gelöscht wird, die Überprüfung wieder ab der selben Spalte beginnen. Ich hoffe ich habe mich verständlich ausgedrückt. Ich bitte um Hilfe.. die Lösung ist sicher denkbar einfach, habe jedoch gerade erst angefangen mich mit VBA zu beschäftigen. Hier der Code: [code]Sub Spalten_löschen() 'Dieses Makro fügt eine Anzahl an Spalten für Leistung und Wirkungsgrade hinzu, die der Anzahl an gewählten Modulen entspricht Dim Anz_Module, i As Integer Dim Zelle As Range Anz_Module = Worksheets("Test1").Range("B1") Worksheets("Test").Activate 'Existierende Anzahl an Spalten Löschen For i = 1 To 6 For Each Zelle In ActiveSheet.Range("A2:Z2") If Zelle.Value = "Leistung BHKW Modul " & i & " (in %)" Or Zelle.Value = "el. Wirkungsgrad BHKW Modul " & i & " (in %)" Or Zelle.Value = "th. Wirkungsgrad BHKW Modul " & i & " (in %)" Then Columns(Zelle.Column).Delete 'An dieser Stelle soll Zelle wieder eine Spalte zurückspringen, da sonst die "Überschrift" nicht überprüft wird, die wegen Delete eine Spalte nach links gerutscht ist End If Next Zelle Next i End Sub[/code] Vielen Dank schon im Voraus!

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot korrekt Spalten löschen wenn...
01.02.2017 08:28:18 Peter Wrong
Solved
04.02.2017 01:28:53 gast
NotSolved