Geh zum Hausarzt. Entweder er macht es gleich selbst oder er überweist dich weiter.

...zur Antwort

Bin mal mit dem Debugger durchgegangen. Die If Bedingung ist nie erfüllt.

...zur Antwort
[VBA] - Bestimmte Daten auslesen und vergleichen?

Servus Freunde, ich sitze zurzeit an einem Makro mit dem ich bestimmte Daten vergleichen will.

Also als Beispiel habe ich eine Excel Tabelle mit folgenden Daten:

  1. Erste Prüfung (Datum)
  2. Zeitraum bis neue Prüfung (Zahl z.B. 12 [Monate])
  3. Letzte Prüfung (Datum)

So nun möchte ich herausfinden ob, seit dem letztem öffnen der Excel Datei, eine neue Prüfung fällig ist.

Mein Pseudocode sieht aktuell so aus, jedoch habe ich keinen Schimmer wie ich das in VBA umsetzen kann:

Schleife die durch alle Zeilen läuft

Schleife für X Jahre

if Aktuelles Datum > Datum Erste Prüfung + X*(Zeitraum bis neue Prüfung) > Letzte Prüfung

Then Letzte Prüfung = Aktuelles Datum und MSGBox

Beispiel:

Aktuelles Datum: 25.03.2018
Erste Prüfung: 22.05.2014
Zeitraum: 12 Monate
Letzte Prüfung: 14.02.2017

-> Erste Prüfung + 3*12Jahre = 22.05.2017

Aktuelles Datum > 22.05.2017 > Letzte Prüfung

In diesem Fall müsste also eine neue Prüfung durchgeführt werden und das Datum der letzten Prüfung auf aktuelles Datum setzen.
Das Makro soll immer beim Öffnen der Excel Datei ausgeführt werden und dafür habe ich folgendes benutzt:

Private Sub Workbook_Open()
call "Automatic" 
End Sub

Automatic soll das Makro sein wo später die Datumsprüfung durchgeführt wird.

Allerdings bekomme ich zurzeit noch einen Syntax Fehler für das automatische Makro ausführen.

Ich hoffe ihr konntet mir irgendwie folgen. Bei Fragen stehe ich natürlich gern zur Verfügung.

...zum Beitrag

Es geht mir vorallem um den Vergleich der Daten.

...zur Antwort

Also ich habe gerade gesehen, dass man auch auf Empfänger bearbeiten gehen kann und dann bei der Spalte Duzen auswählen kann nur gefüllte Felder anzeigen. So würde es wohl theoretisch auch funktionieren, aber da muss es doch noch einen anderen weg geben?

...zur Antwort
[VBA] Hilfe bei Excel Code?

Servus Leute.

Ich habe 2 Excel Dateien. Datei A enthält Namen. Datei B enthält Namen und Stunden und ein Feld für die Art der Stunde (Unterscheidung ob Ortstermin, oder Aktenarbeit usw.)

Die Namen die in Datei B auftauchen gibt es auch in Datei A. So habe ich mir ein Klassenmodul "Auftrag" erstellt und und alle möglichen Klassenvariablen hinzugefügt die ich brauche.

Nun laufe ich die beiden Excel Dateien durch, und wenn ein Name in A und B vorkommt, dann wird ein neues Member Objekt erzeugt. Wenn man jetzt B weiter durchläuft und es schon ein Member Objekt mit dem Namen gibt der als nächstes kommt, dann werden nur die Stunden aufaddiert.

So das hat soweit auch alles ganz gut geklappt.

Nun wollte ich aber noch für die verschiedenen Stundentypen Klassenvariablen erstellen. Als Beispiel hat ein Mitarbeiter für einen Kunden 10 Stunden gemacht. 2 Stunden Aktenstudium, 2 Stunden Vorbereitung, 3 Stunden Ortstermin, und 3 Stunden Recherche. Ich möchte also die Stunden nicht als gesamtes darstellen (10 Stunden) sondern die Stunden für die einzelnen Bereiche. Diese Bereiche sind vordefiniert und es gibt 5 verschiedene, also habe ich 5 neue Klassenvariablen zu meinem Klassenmodul hinzugefügt.

Er gibt keine Fehler aus, dass einzige Problem ist, dass er die Stunden nicht richtig zusammenrechnet und ich weiß nicht wieso. Also die Werte für: Vorbereitung, Aktenstudium, Termin, Recherche und Gutachten sind am Ende nicht richtig.

Der Fehler muss m.E. zwischen den Zeilen 115 und 162 liegen.

https://pastebin.com/NNMs0LEw

...zum Beitrag

Hab es selber hinbekommen. Musste in fraglicher Codezeile alle Variablen wieder auf 0 setzen bevor ich in die If-Abfragen gehe. Also:

Vorbereitung = 0
Aktenstudium = 0
Termin = 0
Recherche = 0
Gutachten = 0

If InStr(sheet.Cells(row,4), "GG: Vorbereitung Termin")>0 Then
Vorbereitung = Val(sheet.Cells(row,7))
End If

...
...zur Antwort

Sorry hat sich schon erledigt, hatte in der If Bedingung (row, 2) und nicht (row, 1) stehen

*facepalm*

...zur Antwort

Habs jetzt so gemacht, danke für die Hilfe ;)

Dim intChoice As Integer
Dim strPath As String

'only allow the user to select one file
Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False
'make the file dialog visible to the user
intChoice = Application.FileDialog(msoFileDialogOpen).Show
'determine what choice the user made
If intChoice <> 0 Then
'get the file path selected by the user
strPath = Application.FileDialog( _
msoFileDialogOpen).SelectedItems(1)

End If

Set workbooks2 = Workbooks.Open(strPath)
...zur Antwort

Ok sehr schön das funktioniert schonmal, geht das auch wieder umgekehrt? Und wie mach ich das das dropdown menü sich nicht schließt nachdem man eine Auswahl angeklickt hat? :))

...zur Antwort

Ich habs gerade selber hinbekommen:

   Dim BorderIndex As Variant
For Each BorderIndex In Array(xlEdgeTop, xlEdgeLeft, xlEdgeBottom, xlEdgeRight, xlInsideHorizontal, xlInsideVertical)
With Range(Cells(Last, "A"), Cells(Last, "U")).Borders(BorderIndex)
.Weight = xlThin
.ColorIndex = 1
End With
Next BorderIndex
...zur Antwort