Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
344to348
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
344to348
344to348
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Mehrfache If-Abfrage

Mehrfache If-Abfrage
30.11.2003 22:04:28
Franz W.
Guten Abend Forum,

ich habe Probleme mit einer mehrfachen If-Abfrage und komme leider nicht weiter. Darum wende ich mich vertrauensvoll an Euch mit der Bitte um Hilfe.

Siehe unten stehende Tabelle:

eine Aktion soll durchgeführt werden:
- wenn in C1-14 ein Name drin steht
- und auch dann nur, wenn zum Namen in Spalte D oder Spalte G eine Eintrag steht. Das heißt also, NUR BEI "Barbara" und "Sabrina", nicht aber bei Fanny und Simon.

Könnt Ihr mir bitte bei der If-Syntax helfen?

For i = 1 To 14
If Cells(i, 3) <> "" and ... or ... ???
Next

Vielen Dank für Eure Hilfe im Voraus und beste Grüße
Franz

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrfache If-Abfrage
30.11.2003 22:11:10
PeterW
Hallo Franz,

vielleicht so:

If Cells(i, 3) <> "" Then
If Cells (i, 4) <> "" Or Cells(i, 7) <> "" Then

Gruß
Peter
AW: Mehrfache If-Abfrage
30.11.2003 22:13:14
Michael
hi,
in diesem fall ist and richtig:

For i = 1 To 14
If Cells(i, 3) <> "" and cells(i,4) <> "" and Cells(i, 5) <> "" and cells(i,6) <> "" then
dein code
end if
Next

cu Michael
upps...sorry
30.11.2003 22:16:30
Michael
das eine oder hab ich glatt übersehen
*rotwerd*
cu Michael
AW: Mehrfache If-Abfrage
30.11.2003 22:14:56
Josef Ehrensberger
Hallo Franz,

z.B.: so!


Sub Franz()
Dim i As Integer
For i = 1 To 14
If Cells(i, 3) <> "" And Cells(i, 4) <> 0 Or Cells(i, 7) <> 0 Then
End If
Next
End Sub


Gruß Sepp
Anzeige
Leider noch keine Lösung, aber vielleicht muss ich
30.11.2003 22:28:30
Franz W.
... mich jetzt schämen?!?

Herzliches Hallo an Alle!

Leider geht noch keine der Lösungen. Aber vielleicht ist etwas wichtig, was ich vorhin noch nicht für wichtig gehalten und deshalb nicht geschrieben habe: in den Spalten D und G stehen Formeln zur Berechnung der Zhal die da drin steht (weiß nicht, ob das von Bedeutung ist?!?)

Habe deshalb den Vorschlag von Peter auch so geändert:
If Cells(i, 3) <> "" Then
If Cells(i, 4) <> 0 Or Cells(i, 7) <> 0 Then

... geht aber leider auch nicht.

Es sollen Rechnungen geschrieben werden. Und nun wird eine saubere Rechnung für Barbara geschrieben. Und dann kommt noch eine vertümmelte (weiß noch nicht warum), und dann ist Schluss.

Hier mal der gesamte Code. Die MsgBox, die ich zum Testen anstelle des Ausdruckes gesetzt habe, zeigt beim ersten Durchlauf brav "Barbara", beim zweiten (mit dem verstümmelten Ausdruck), zeigt er plötzlich "Barbara Kowarschik", der Nachname gehört zur Barbara und steht in "M1", keine Ahnung wie der da hinkommt. Vielleicht hat ja noch jemand eine Idee, falls der Code für die sppäte Stunde nicht zu lange ist:


Sub Rechnungen_drucken()
''''''''Rechnungen drucken
Application.ScreenUpdating = False
Dim Fst$, SFst$, Gebuehr As Currency
Dim KdTitel$, KdNr$, KdNName$, KdVName$, KdStr$, KdPLZ$, KdOrt$
Dim ReDat As Date, jZahl$, KalWo$, AbrMon$
Dim EnerHausgPath$, ENPath$, FstPath$
Dim i As Byte
Dim wkb As Workbook, wks As Worksheet
Dim sWb, sWbFs, ReNr$
Dim VorlENFst$
Dim FSo, OrdnerName
VorlENFst = ThisWorkbook.Worksheets("help").[C24]
EnerHausgPath = "C:\Dokumente und Einstellungen\bernhard\Eigene Dateien\ENERGIE_HAUSGEMACHT\"
ENPath = EnerHausgPath & "RechnungenEN\"
jZahl = [a13]
AbrMon = Format([a20], "mmmm")
'## Prüfen, ob alle Adressen eingetragen sind:
For i = 1 To 14
If Cells(i, 3) <> "" And Cells(i, 11) = "" Then
MsgBox Chr(13) & _
"Bei    "" " & Cells(i, 3).Value & " ""    ist die Adresse noch nicht eingetragen        " _
& Chr(13) & Chr(13), 16
Exit Sub
End If
Next
'## Sicherheitsabfrage:
If MsgBox(Chr(13) & "Sollen die Rechnungen jetzt gedruckt werden?         " & Chr(13) & " ", 65, _
"Fahrstundenabrechnungen") = vbCancel Then Exit Sub
'## Zelle mit Ausgangsdatum sperren:
Worksheets("Fahrstunden").Unprotect
With Range("A15")
If Not .Comment Is Nothing Then .ClearComments
.Locked = True
.FormulaHidden = False
End With
Worksheets("Fahrstunden").Protect
'## Rechnungen drucken:
'## Prüfen ob "KUNDENDATEN.xls" schon offen:
On Error Resume Next
Set sWb = Workbooks("KUNDENDATEN.xls")
If Not IsObject(sWb) Then Workbooks.Open _
Filename:=EnerHausgPath & "KUNDENDATEN.xls"
On Error GoTo 0
Set sWb = Nothing
'## Prüfen ob "RECHNUNGEN_EN.xls" schon offen:
On Error Resume Next
Set sWbFs = Workbooks("RECHNUNGEN_EN.xls")
If Not IsObject(sWbFs) Then Workbooks.Open _
Filename:=ENPath & "RECHNUNGEN_EN.xls"
On Error GoTo 0
Set sWbFs = Nothing
Workbooks("RECHNUNGEN_EN.xls").Worksheets("Offene").Unprotect
'## Erstellung der Variablen für ReNr:
Set wkb = Workbooks("KUNDENDATEN.xls")
Set wks = wkb.Worksheets("Help")
'## Hier geht's los:
Workbooks(ThisWorkbook.Name).Sheets("Fahrstunden").Activate
For i = 1 To 14
If Cells(i, 3) <> "" Then
If Cells(i, 4) <> 0 Or Cells(i, 7) <> 0 Then
KdVName = Cells(i, 3)
KdNr = Format(Cells(i, 11), "000")
KdTitel = Cells(i, 12)
KdNName = Cells(i, 13)
KdStr = Cells(i, 14)
KdPLZ = Cells(i, 15)
KdOrt = Cells(i, 16)
Fst = Cells(i, 4)
SFst = Cells(i, 7)
'            Gebuehr = Format(Cells(i, 9), "0.00")
Gebuehr = Cells(i, 9)
ReDat = Date
'## Rechnungsnummer auslesen:
ReNr = wks.Cells(9, 12).Value
'## Rechnungsnummer hochzählen:
wks.Cells(9, 10).Value = wks.Cells(9, 10).Value + 1
Application.ScreenUpdating = False
'###  Neue Datei mit Vorlage EN_ReVorlageFS.xlt :
Workbooks.Add Template:=VorlENFst
With Workbooks("EN_ReVorlageFS1")
With .Worksheets("Fahrstundenrechnung")
.Unprotect
.Range("C6").Value = KdTitel
.Range("D6").Value = KdNName
.Range("E6").Value = KdVName
.Range("C9").Value = KdStr
.Range("C12").Value = KdPLZ
.Range("D12").Value = KdOrt
.Range("H7").Value = ReDat
.Range("H8").Value = ReNr
.Range("H9").Value = KdNr
.Range("E17").Value = AbrMon
.Range("C21").Value = Fst
.Range("C22").Value = SFst
.Range("H23").Value = Gebuehr
.Protect
'## Drucken der Datei:
'# Ausdruck mit Standarddrucker:
MsgBox KdVName
'                    .PrintOut ActivePrinter:=GetDefaultPrinter
End With
'##  Neue Datei speichern:
''  Prüfen ob Ordner ...\jZahl\ existiert
Set FSo = CreateObject("Scripting.FileSystemObject")
OrdnerName = ENPath & jZahl & "\"
If Not FSo.FolderExists(OrdnerName) Then
' Ordner  ...\jZahl\  erstellen
MkDir ENPath & jZahl & "\"
End If
FstPath = ENPath & jZahl & "\"
'## Prüfen ob Ordner ...\jZahl\Fahrstunden\ existiert
Set FSo = CreateObject("Scripting.FileSystemObject")
OrdnerName = FstPath & "Fahrstunden\"
If Not FSo.FolderExists(OrdnerName) Then
' Ordner  ...\jZahl\Fahrstunden\  erstellen
MkDir FstPath & "Fahrstunden\"
End If
FstPath = FstPath & "Fahrstunden\"
'## Mit "Replace" die Punkte verschwinden lassen, damit sie nicht im Dateinnamen drin sind:
KdTitel = Replace(KdTitel, ".", "")
KdNName = Replace(KdNName, ".", "")
KdVName = Replace(KdVName, ".", "")
'## Speichern im Ordner ...\FstPath\
.SaveAs FstPath & _
"KW " & KalWo & _
ReNr & " " & KdNr & " " & KdTitel & " " & KdNName & " " & KdVName & ".xls"
'## Speichern und schließen:
Application.ScreenUpdating = False
'                .Close SaveChanges:=True
End With
End If
End If
Next
Application.ScreenUpdating = False
With Workbooks("RECHNUNGEN_EN.xls")
.Worksheets(2).Activate
.Worksheets("Offene").Activate
.Worksheets("Offene").Protect
.Save
'        .Close SaveChanges:=True
End With
Workbooks(ThisWorkbook.Name).Sheets("Fahrstunden").Activate
End Sub


Herzlichen Dank und beste Grüße
Frarnz
Anzeige
AW: Leider noch keine Lösung, aber vielleicht muss ich
30.11.2003 22:34:53
PeterW
Hallo Franz,

wenn in den Zellen Formeln stehen frag ausdrücklich den Wert ab:

If Cells(Zeile, Spalte).Value <> ...

Gruß
Peter
Leider immer noch dasselbe, Peter :-((( o.t.
30.11.2003 22:40:24
Franz W.
WIRD BESSER..........
30.11.2003 22:43:53
Franz W.
Hallo Peter,

den Fehler für das Gewurschtel hab ich gefunden, musst zwei Zeilen umstellen, so ist es richtig:

For i = 1 To 14
Workbooks(ThisWorkbook.Name).Sheets("Fahrstunden").Activate
If Cells(i, 3) <> "" Then
If Cells(i, 4).Value <> 0 Or Cells(i, 7).Value <> 0 Then

Er hat vorher auf die falsche Datei zugegriffen.

Jetzt ist allerdings so,d ass er für alle 4 Namen Rechnungen rauslässt, auch für Fanny und Simon, bei denen nichts eingtragen ist.

Grüße
Franz
Anzeige
AW: WIRD BESSER..........
30.11.2003 22:45:45
y
If Cells(i, 3) <> "" And Cells(i, 4) <> "" Or Cells(i, 5) <> "" And Cells(i, 6) <> "" Then
Super, das klappt!!
30.11.2003 22:50:57
Franz W.
Aller verehrtester Herr Y,

jawolll, so haut es:

If Cells(i, 3) <> "" And Cells(i, 4) <> "" Or Cells(i, 3) <> "" And Cells(i, 7) <> "" Then

*riesigfreu*

Vielen Dank und beste Grüße
Franz
AW: WIRD BESSER..........
30.11.2003 22:53:00
PeterW
Hallo Franz,

bin schon zu lange am Rechner - versuch es mal mit:

With Workbooks(ThisWorkbook.Name).Sheets("Fahrstunden")
If .Cells(i, 3) <> "" Then
If .Cells(i, 4).Value > 0 Or .Cells(i, 7).Value > 0 Then
.
.
End With

Gruß
Peter
Anzeige
AW: WIRD BESSER..........
30.11.2003 22:57:44
Franz W.
Hallo Peter,

dann darf ich Dich jetzt vom Rechner "entlassen" ;-))), ich bin geholfen!! Siehe zwei Zeilen höher von "y".

Trotzdem vielen Dank für Deine Hilfe (nicht nur hierbei...!!!) und Gute Nacht
Franz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige