PDA

Vollständige Version anzeigen : Schleifenbedingung nicht erfüllt


Joesen87
23.09.2011, 12:45
Hallo alle zusammen,

wie ihr sehen könnt ist dies mein erster Beitrag in eurem Forum, genau so jungfräulich wie mein Beitrag hier sind auch meine Excel-Kenntnisse ;)

Ich habe mir folgende Aufgabe zum Ziel gemacht, zurzeit verwende ich Office 2003.

Ich verfüge über eine Excelliste, auf der die Tage und das Datum in zwei Spalten dargestellt ist. In den restlichen Spalten werden Informationen über Umsätze & Co gesammelt.

Da die Zahl der Tage in jedem Monat schwankt, habe ich mir überlegt über eine Messagebox den Monat abzufragen und das Datum sowie den Wochentag automatisch über Makro zu bestimmen.

Daraufhin habe ich Smarttools4.0 besorgt, welcher auf ein neues Tabellenblatt in gewünschter Form ein Kalender für das gesamte Jahr 2011 erstellt, siehe Anlage.

Soweit so gut, nun habe ich einen VBA-Code zusammengeschrieben.
Wie erwähnt frage ich den Monat über eine Inputbox ab, hierbei sollte die Eingabe zum Beispiel so erfolgen "Januar" - dass heisst mit Anführungszeichen.
Die Messageboxen habe ich zur Kontrolle der Werte eingefügt.

Nun zu meinem Problem, über die Eingabe von "Januar" frage ich unter dem Tabellenblatt 2011 die Zelle B2 ab. Die Schleifenbedingung wird jedoch nicht erfüllt. Ich habe desweiteren auch direkt ohne die Variable Zeahler versucht, jedoch ohne Erfolg.

Kann es sein, dass die im erstellten Kalender verundene Zellen ärger machen?

Über eure Hilfe würde ich mich sehr freuen! Mache schon seit 1 1/2 Tagen rumm an dem Code...

---------------

Private Sub CommandButton1_Click()


Dim Monat As String
Dim Jahr As String
Dim Zeahler As Integer
'Dim Monatkontrolle As String
Dim Kontrolle As Integer

Jahr = Sheets("Tabelle1").Range("C2") 'Im Feld C2 ist 2011 hinterlegt

Monat = InputBox("Bitte Kalendermonat eingeben, z.B. Januar", _
"Bestimmung des Monats", 0, 830, 950)

Kontrolle = 0 'Abbruchkriterium für die For-Schleife
'Monatkontrolle = Monat

'MsgBox "Ihre Auswahl:" & vbNewLine & Monatkontrolle

Sheets(Jahr).Select
ActiveSheet.Range("C18").Select 'Probe ob Tabellenblatt erfolgreich aufgerufen wird

For Zeahler = 2 To 12


If Cells(2, Zeahler).Value = Monat Then

Kontrolle = 1

Range(Cells(3, Zeahler), Cells(93, Zeahler)).Select
Selection.Copy


'MsgBox "Ihre Auswahl:" & vbNewLine & Zeahler

End If

If Kontrolle = 1 Then Exit For

'MsgBox "Ihre Auswahl:" & vbNewLine & Zeahler

Next Zeahler


'MsgBox "Ihre Auswahl:" & vbNewLine & Kontrolle

Sheets("Tabelle1").Select
Range("A44").Select
ActiveSheet.Paste


End Sub

----------------

Rudi Maintaire
23.09.2011, 13:09
Hallo,
ein Kalender für das gesamte Jahr 2011 erstellt, siehe Anlage.
ich sehe keine Anlage.
Vermutlich steht aber in deinem Kalender ein Datum, also eine Zahl und kein Text. Dann kann der Vergeich nicht funktionieren.
Versuchs mal mit
If Format(Cells(2, Zeahler).Value,"MMMM") = Monat Then

Gruß
Rudi

Joesen87
23.09.2011, 16:45
Hallo Rudi,

vielen Dank erstmal für deine Antwort.

Seltsam, bin eigentlich der Meinung ich hätte den Kalender angehängt. Bin gerade am falschen Rechner, deshalb mache ich das zu einem späteren Zeitpunkt.

Also die Zelle - auf die ich zugreifen will - entspricht nur den verschiedenen Monaten im Jahr und sind ausgeschrieben.

Für was stehen die 4 m's in deinem Code?

Hajo_Zi
23.09.2011, 17:05
4xM steht für ausgeschriebenen Monat Analog zur Funktion Text() in der Tabelle.

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm" onclick="window.open(this.href);return false"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

Joesen87
23.09.2011, 19:05
Also hier ist mal der Kalender.

Ich habe die Zeile von Rudi in meinen Quelltext eingefügt.
Jedoch springt er immer noch nicht in die If-Schleife. Ich habe sie 1zu1 kopiert, jedoch immer noch nicht zu 100 Prozent verstanden..

http://img4.fotos-hochladen.net/thumbnail/kalenderr1u25phf3l_thumb.jpg (http://www.fotos-hochladen.net/view/kalenderr1u25phf3l.jpg)

Danke für eure Hilfe, hoffe auf weitere :)

Hajo_Zi
23.09.2011, 19:16
ich benutze nun schon Version 2010, aber selbst diese Version kann aus einem Bild keine Tabelle erstellen. Warum sollte ich die Zeit in die Erstellung investieren, das hast Du ja schon.

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

Joesen87
24.09.2011, 11:03
Ich verstehe, Excel 2010 verspricht also auch nicht dass, was man sich davon erhofft..

Vielleicht habe ich mich verkehrt ausgedrückt, die Erstellung des Kalenders hat funktioniert. Aus dem Kalender will ich nun die Anzahl der Tage Kopieren sowie die zugehörigen Wochentage, sodass ich das nicht mehr von Hand machen muss.

Über den Button gebe ich dann den gewünschten Monat ein, jedoch klappt das mit der If - Bedingung nicht wie gewollt. Wie erwähnt gebe ich den Monat mit Anführungszeichen ein, sodass er es in der If - Bedingung als String erkennt.

Nun habe ich die Excel-File angehängt.



Danke nochmals für deine Mühen.

Hajo_Zi
24.09.2011, 11:14
Du sagst excel da e was kopieren sol Du fügst es aber nicht ein. Den Vorschlag hast Du auch nicht eingefügt. Auf select usw. kann in VBA verzichtet werden. Der Cursor ist kein Hund der überall rumgeführt werden muss.
Option Explicit

Private Sub CommandButton1_Click()
Dim Monat As String
Dim Jahr As String
Dim Zeahler As Integer
'Dim Monatkontrolle As String
Dim Kontrolle As Integer
Jahr = Sheets("Tabelle1").Range("C2")
Monat = InputBox("Bitte Kalendermonat eingeben, z.B. Januar", _
"Bestimmung des Monats", 0, 830, 950)
Monat = Application.Substitute(Monat, """", "")
Kontrolle = 0
'Monatkontrolle = Monat
'MsgBox "Ihre Auswahl:" & vbNewLine & Monatkontrolle
With Sheets(Jahr)
For Zeahler = 2 To 12
If Format(.Cells(2, Zeahler), "MMMM") = Monat Then
'If Format(Cells(2, Zeahler).Value, "MMMM") = Monat Then
Kontrolle = 1
.Range(.Cells(3, Zeahler), .Cells(93, Zeahler)).Copy
MsgBox "Ihre Auswahl:" & vbNewLine & Kontrolle
End If
If Kontrolle = 1 Then Exit For
'MsgBox "Ihre Auswahl:" & vbNewLine & Zeahler
Next Zeahler
End With
MsgBox "Ihre Auswahl:" & vbNewLine & Kontrolle
'Range("A44").Select
'ActiveSheet.Paste
End Sub

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

Joesen87
24.09.2011, 13:06
Hey Hajo,

erstmal danke für deine Hilfe, nun funktioniert es wie ich mir das vorgestellt hatte.

Eine kleine Frage habe ich zum Verständnis:

- Monat = Application.Substitute(Monat, """", "")

Was sagt die Anweisung aus?

- If Format(.Cells(2, Zeahler), "MMMM") = Monat Then

und

.Range(.Cells(3, Zeahler), .Cells(93, Zeahler)).Copy

Was bringen die Punkte jeweils vor dem Cells?

Vielen Dank nochmals, werde den Beitrag gleich auf erledigt aktivieren..

Hajo_Zi
24.09.2011, 13:20
Du Hast geschrieben das Du "Januar" eingibst, damit kann VBA nichts anfangen. VBA braucht es ohne "
Ich beziehe mich auf With

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>