Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

For-Next Schleife
#1
Hallo liebes Forum !

Da die For-Next Schleifen ja nur auf numerischer Basis funktionieren, weiß jemand eine Möglichkeit z.B. mit Monatsnamen in Tabellenblättern (Jänner bis Dezember) eine gezielte Schleife zu setzen?

Der Grund ist, dass es vorkommen kann, dass in einer Jahresdatei ein Monats-Tabellenblatt z.B. März-2 zusätzlich eingefügt wird und dann funktioniert For i = 1 To 12 nicht mehr, außer wenn das hinzugefügte TB (13) ans Ende gestellt wird, was aber nicht gewünscht ist. Ich möchte aber nur 1-12 weiter bearbeiten.

Ich wäre für Eure werte Hilfe sehr dankbar.
Liebe Grüße aus Innsbruck
Helmut
Antworten Top
#2
Hallo Helmut,

z.B. so:

Code:
Sub aaa()
  Dim i As Long
  For i = 1 To 12
    Worksheets(Format(DateSerial(1, i, 1), "mmmm")).Activate
    Stop  'weiter mit Taste F5
  Next i
End Sub

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • heli
Antworten Top
#3
Hallo Helmut,
Du programmierst für diesen Fall eine Schleife über alle Blätter und Vergleichst die Namen mit der Vorgabe für jeden Monat.
Oder Du erstellst ein Array mir den Blattnamen und nimmst dann das Array als Bezug bzw. Quelle.
Im Prinzip
arrMon = Array("Jan","Feb",...)
For icnt=...
Sheets(arrMon(icnt).activate
Next
Oder Du machst es, wie Uwe geschrieben hat.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • heli
Antworten Top
#4
Hallo!
Wenn Dein zusätzliches Blatt mit einer Zahl endet, ginge es auch so:
Code:
Sub Machs()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
   If Not IsNumeric(Right(ws.Name, 1)) * 1 Then
      MsgBox ws.Name 'bzw. Dein Code
   End If
Next
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • heli
Antworten Top
#5
Hallo Uwe, hallo Andrè, hallo Ralph !

Vielen Dank für Eure Hilfe.
Leider komme ich erst abends dazu einen Test zu machen.

Liebe Grüße
helmut
Antworten Top
#6
Hi Ralf,

(03.02.2015, 06:57)RPP63 schrieb: Wenn Dein zusätzliches Blatt mit einer Zahl endet, ginge es auch so:

falls ein Blatt gewissermaßen "kopiert" wird, ist das letzte Zeichen immer ein ")", also "März (2)", dann klappt das so vermutlich nicht.

Da er aber ja geschrieben hat "März-2" hast Du Recht.
Antworten Top
#7
Hallo,

Helmut wollte ja gerade die Kopien unberücksichtigt lassen. So verstehe ich seine Frage.

Gruß Uwe
Antworten Top
#8
Hi!
Ich auch, deshalb mein Vorschlag ... :30:
(hätte ja auch den Vorteil, dass man sich um die tatsächliche Anzahl der Sheets nicht zu kümmern braucht)

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#9
Hi Ralf (RPP63),

Du hast ja so Not Not Recht. Smile

Gruß Uwe
Antworten Top
#10
Hallo Ihr Lieben!

Ich habe Ralphs Code verwendet, er funktioniert auch bestens, nur habe ich jetzt ein kleines Problem und komme trotz stundenlangen Versuchen nicht dahinter, wie das zu lösen wäre.
Das liegt leider an mir und meinem zu geringen Wissen.

Ich sollte nämlich z.B. einen in irgendeinem Monatstabellenblatt z.B. April in Zelle E5 eingegebenen Namen nur in die nachfolgenden Monate bis Dezember, aber ohne Berücksichtigung der zusätzlich eingefügten Tabelle übertragen.
Mit For/Next würde es ja funktionieren, wenn die zusätzlich eingefügte Tabelle nicht wäre.

Kann mir bitte jemand von Euch helfen, ich bin schon am Verzweifeln, dass ich nicht dahinter komme.
Vielen Dank
Helmut
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste