Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
232to236
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
232to236
232to236
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

If

If
20.03.2003 10:59:35
Alex
Hallo

ich stehe gerade auf dem schlauch :-)
wie mach ich noch mal des mit if ?
ich will sagen wenn etwas in der zeile steht und in der dann trag des in die zeile ein. geht doch oder ?

mfg

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
  • 20.03.2003 11:01:54
    Fred
  • 20.03.2003 11:08:15
    Alex
  • 20.03.2003 11:17:50
    Fred
  • 20.03.2003 11:19:47
    alex
  • 20.03.2003 11:22:15
    Kurt
  • 20.03.2003 11:58:51
    Alex
Anzeige
Re: If
20.03.2003 11:01:54
Fred
ich habe jetzt nicht alle Spalten gepostet, aber Formel einfach bis IV ziehen
Re: If
20.03.2003 11:08:15
Alex
Ich mein es glaub anderst. sorry.
Kannst du mir den ganzen code schicken mit if ....
Also wenn in der Spalte C und G die zeile ändert sich immer, etwas steht. Dann schreib in die Spalte I Hallo (beispiel) rein.

Verstehst du ? hab mich bissle blöd ausgedrückt sorry.


MFG

Re: If
20.03.2003 11:17:50
Fred
Re: If
20.03.2003 11:19:47
alex
Ok versteh ich aber muss ich des für jede zeile machen ? kann ich des net so machen dass der des in der zeile dann macht wo ich gerade bin ?
Re: If
20.03.2003 11:22:15
Kurt
Hi,

=WENN(ODER(C1="";G1="");"";"HALLO")

Gruß

Kurt

Re: If
20.03.2003 11:58:51
Alex
Des funtioniert bei mir net.
Ich will in dem code sagen wenn startzeit und priorität eingetragen ist dann sol er auch das sollende eintragen.
wo schreib ich des jez hin bitte helft mir ich kom net weiter.
Option Explicit

'## Zwischenspeichern der aktuellen Zelle (im Changeereignis sind die Werte der neuen Zelle bei Activecell zu finden)
'## es werden aber die Werte der geänderten Zelle benötigt.
'## Dafür werden diesen beiden Variablen im SelectionChange-Ereignis die Werte der aktuellen Zelle zugewiesen.
'## Dieses Ereignis wird nach dem Change-Ereignis aufgerufen -> diese Variablen haben noch den Wert der
'## geänderten Zelle und ermöglichen die Auswertung einer Änderung.
Private aktuelle_zeile As Long
Private aktuelle_spalte As Long
'## damit das Schreiben per Code keine Ereignisse auslöst
Private zuordnung_per_code As Boolean


'## Zuweisen eines Wertes an Variablen beim Laden der Tabelle
Private Sub Worksheet_Activate()
aktuelle_zeile = 1
aktuelle_spalte = 1
ActiveCell.Columns = 1
ActiveCell.Rows = 1
zuordnung_per_code = False
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim startzeit As Variant
'## Diese Variable wird abgefragt, damit das Schreiben in das Sollendefeld nicht von dieser Prozedur
'## ausgewertet wird. Ansonsten würde ein mehrfacher Prozeduraufruf stattfinden.
If zuordnung_per_code = False Then

'## welche Spalte wurde geändert
Select Case aktuelle_spalte

Case 2
'## Von wem erfasst?
' startzeit = Sheets("Tabelle1").Cells(aktuelle_zeile, 3)
'## falls noch keine Startzeit eingegeben wurde, wird die momentane Zeit
'## in das Startzeitfeld geschrieben.
'If (IsNull(startzeit) = True) Or (startzeit = "") Then
' zuordnung_per_code = True
' Sheets("Tabelle1").Cells(aktuelle_zeile, 3) = Now
' zuordnung_per_code = False
'End If
Case 10
'## 'Ist Zeit' wurde geändert (Target enthält den Wert der geänderten Zelle)
Call Zeit_berechnen(Target)

End Select

End If

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'## Zuweisen der aktuell gewählten Zelle an die Variablen
aktuelle_zeile = ActiveCell.row
aktuelle_spalte = ActiveCell.Column
End Sub

'## Endzeit wird der Prozedur übergeben entspricht dem Wert der geänderten 'IST-Zeit behoben' -Zelle

Private Sub Zeit_berechnen(endzeit As Variant)
Dim startzeit As Variant
Dim Prioritaet As Variant
Dim Sollende As Variant
Dim wert1 As Variant
Dim wert2 As Variant
Dim wert3 As Variant

On Error Resume Next

wert1 = Sheets("Tabelle3").Range("B2")
wert2 = Sheets("Tabelle3").Range("B3")
wert3 = Sheets("Tabelle3").Range("B4")

' '## Ist ein Datum eingetragen ?
If IsDate((endzeit)) = False Then
MsgBox ("Bitte tragen Sie eine Zeit-Datumskombination in das Feld 'IST-Zeit behoben' ein.")
Exit Sub
Else
' '## Hat der User auch eine Zeit eingetragen ?
If Hour(endzeit) = 0 Then
MsgBox ("Bitte geben Sie die Fertigstellungszeit an.")
Exit Sub
End If
End If
'## Auslesen der zugehörigen Priorität
Prioritaet = Sheets("Tabelle1").Cells(aktuelle_zeile, 7)
'## Auslesen der zugehörigen Start- bzw. Meldungszeit
startzeit = Sheets("Tabelle1").Cells(aktuelle_zeile, 3)

'## Ist ein Datum eingetragen ?
'If IsDate((startzeit)) = False Then
' MsgBox ("Bitte tragen Sie eine Zeit-Datumskombination in das Feld 'Datum / Zeit' ein.")
' Exit Sub
'Else
' '## Hat der User auch eine Zeit eingetragen ?
If Hour(startzeit) = 0 Then
MsgBox ("Bitte geben Sie die Meldungszeit an.")
Exit Sub
End If
'End If

'## Ist eine gültiger Prioritätswert angegeben ?
If IsNumeric(Prioritaet) = False Then
MsgBox ("Bitte geben Sie eine Priorität an.")
Exit Sub
Else
If (Prioritaet < 1) Or (Prioritaet > 3) Then
MsgBox ("Bitte geben Sie eine Priorität von 1, 2 oder 3 an.")
Exit Sub
End If
End If

'## Jetzt sind Start- und Endzeit sowie Priorität vorhanden. Vor der Berechnung der Sollzeit
'## erfolgt noch eine Überprüfung, ob der Endzeitpunkt vor dem Startzeitpunkt liegt.
'## Die Minuten zwischen Start und Endzeit werden abgefragt
If DateDiff("n", startzeit, endzeit) < 0 Then
MsgBox ("Der Fertigstellungszeitpunkt darf nicht vor dem Meldungszeitpunkt liegen.")
Exit Sub
End If

'## Nachdem dies auch zur Zufriedenheit geklärt wurde, wird die Sollendzeit berechnet.
'## Zuerst wird noch geprüft, ob die Meldung nach dem Feierabend erfolgte,
'## wenn ja wird der Startzeitpunkt für die Berechnung auf 08:00 des nächsten Tages (bei
'## Meldung vor 24:00 Uhr ansonsten auf 08:00 Uhr des entsprechenden Tages gelegt.

If (Hour(startzeit) > 16) Then
'## Meldung nach oder um 17:00
startzeit = Day(startzeit) & "." & Month(startzeit) & "." & Year(startzeit) & " " & "08:00:00"
startzeit = DateAdd("d", 1, startzeit)
ElseIf (Hour(startzeit) < 8) Then
'## Meldung vor 08:00 Uhr
startzeit = Day(startzeit) & "." & Month(startzeit) & "." & Year(startzeit) & " " & "08:00:00"
End If

'## Fällt der Startzeitpunkt auf ein Wochenende wird Montag 08:00 als Startzeitpunkt genommen
Select Case Weekday(startzeit)
Case 1
'## Sonntag
startzeit = Day(startzeit) & "." & Month(startzeit) & "." & Year(startzeit) & " " & "08:00:00"
startzeit = DateAdd("d", 1, startzeit)

Case 7
'## Sonnabend
startzeit = Day(startzeit) & "." & Month(startzeit) & "." & Year(startzeit) & " " & "08:00:00"
startzeit = DateAdd("d", 2, startzeit)

End Select

'## je nach Priorität wird das Sollende berechnet
Select Case Prioritaet

Case 1
'## 2 Stunden
Sollende = DateAdd("h", wert1, startzeit)

Case 2
'## 6 Stunden
Sollende = DateAdd("h", wert2, startzeit)

Case 3
'## 1 Tag
Sollende = DateAdd("h", wert3, startzeit)

Case Else
MsgBox ("Bitte geben Sie eine Priorität von 1, 2 oder 3 an.")
Exit Sub

End Select

'## Bisher ist das Sollende für einen 24 Stundenarbeitstag ohne Berücksichtigung des Wochenendes erstellt.

'## Überprüfung, ob Sollende nach Feierabend liegt, da maximal eine Stundenzahl von 6 (max. 23:00 Uhr)addiert wird
'## reicht eine Prüfung daraufhin, ob das Sollende nach 17:00 Uhr liegt.
If Hour(Sollende) > 17 Then
'## Sollende liegt nach Feierabend -> es werden 15 Stunden (Zeit vom Feierabend bis zum Arbeitsbeginn)
'## zum Sollende addiert.
Sollende = DateAdd("h", 15, Sollende)
End If

'## Fällt das Sollende auf einen Wochenendtag ? Wenn ja wird das Sollende auf Montag verlegt.
Select Case Weekday(Sollende)
Case 1
'## Sonntag
Sollende = DateAdd("d", 1, Sollende)

Case 7
'## Sonnabend
Sollende = DateAdd("d", 2, Sollende)

End Select

'## damit im Changeereignis die Auswertung nicht erfolgt, wird die Variable auf true gesetzt
zuordnung_per_code = True

'## Schreiben des Sollendes in das entsprechende Feld
Sheets("Tabelle1").Cells(aktuelle_zeile, 9) = Sollende

If (startzeit = True) Then
Sollende.write
End If

'## liegt das Sollende vor dem Istende
If DateDiff("s", Sollende, endzeit) > 0 Then
'Werte werden rot markiert, wenn Sollende vor dem Istende liegt
Sheets("Tabelle1").Cells(aktuelle_zeile, 9).Font.Color = RGB(255, 0, 0)
Else
'Werte sind in Tabelle1 werden schwarz markiert, wenn Sollende nach dem Istende liegt
Sheets("Tabelle1").Cells(aktuelle_zeile, 9).Font.Color = RGB(0, 0, 0)
End If

'## Zurücksetzen der Variable
zuordnung_per_code = False
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige