Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1424to1428
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
Inhaltsverzeichnis

Bitte um Hilfe bei VBA Programmierung

Bitte um Hilfe bei VBA Programmierung
26.05.2015 23:14:02
oliver
Ich habe seit einer Woche folgendes Problem, ich möchte aus einer Kombinationsliste mit Dienstlegenden (Dienstplan) das Passende finden und ausgeben.
In Zelle J22 bis N22 sollen Dienste vorgegeben werden können, in J24 bis N24 sollen die passenden Dienste ausgegeben werden. Dabei soll die Stundenzahl berücksichtigt werden-zusätzlich fehlt mir die Möglichkeit zB a0 zu vergleichen und falls schon vorhanden(zB Dienstplan) weiterzusuchen.
Anbei ist die Datei.
to bis t4 ist die Eingabe aus den Zellen J22 bis N22,
Stundenmax ist die Zelle Q24, wenn in
J22 bis N22 "-" ist, kann irgend ein Dienst passend zur Kombinationsliste eingesetzt werden.
a0 bis a4 ist aus der Kombinationsliste.
Wenn man mit der Datei ein wenig rumspielt sollte erkannt werden können was ich meine-ist per schreiben schwer zu erklären.
Ich habe einen festen Logik-Knoten in der Birne-Bitte Bitte helft mir!
lg Oliver
https://www.herber.de/bbs/user/97856.xlsm

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bitte um Hilfe bei VBA Programmierung
27.05.2015 15:18:46
fcs
Hallo Oliver,
irgendwie ist mir dein Ansatz die Vorgabewerte mit den Werten in den Zeilen zu vergleichen zu kompliziert.
Außerdem hast du schon 2 Versionen von Makro kombi in deiner Datei - eine im Modul, eine unter Tabelle1.
ich würde es wie folgt anpacken. So hast du die Möglichkeit eine Fundstelle zu übernehmen, und kannst ggf. auch weiter suchen.
Gruß
Franz
Sub kombiNeu()
Dim arrVorgabe(1 To 5) As String
Dim Zeile As Long, Spalte As Long
Dim StundenMax As Double, Sollstunden As Double
Dim wksKombi As Worksheet
Dim bolTreffer As Boolean
Dim strErgebnis As String
Set wksKombi = Worksheets("Kombinationen")
With wksKombi
'Vorgabewerte einlesen
arrVorgabe(1) = .Cells(22, 10).Text
arrVorgabe(2) = .Cells(22, 11).Text
arrVorgabe(3) = .Cells(22, 12).Text
arrVorgabe(4) = .Cells(22, 13).Text
arrVorgabe(5) = .Cells(22, 14).Text
Sollstunden = .Cells(22, 16)
StundenMax = .Cells(24, 17)
'Inhalte in Ergebniszellen löschen
.Range(.Cells(24, 10), .Cells(24, 16)).ClearContents
'Kombinationen durchsuchen und vergleichen
For Zeile = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
'Ist-Stunden in Zeile mit Max-Stunden vergleichen
If StundenMax  "-" _
And arrVorgabe(Spalte)  .Cells(Zeile, Spalte).Text Then
bolTreffer = False
Exit For
End If
Next
If bolTreffer = True Then
strErgebnis = "| " & .Cells(Zeile, 1) & " | " & .Cells(Zeile, 2) _
& " | " & .Cells(Zeile, 3) & " | " & .Cells(Zeile, 4) _
& " | " & .Cells(Zeile, 5) & " |" & vbLf _
& "Ist-Stunden: " & .Cells(Zeile, 7) & vbLf _
& "Zeile: " & Zeile
If MsgBox(strErgebnis & vbLf & vbLf & "Ergebnis eintragen?", _
vbQuestion + vbYesNo, _
"Dienstplan-Kombi") = vbYes Then
.Cells(24, 10) = .Cells(Zeile, 1)
.Cells(24, 11) = .Cells(Zeile, 2)
.Cells(24, 12) = .Cells(Zeile, 3)
.Cells(24, 13) = .Cells(Zeile, 4)
.Cells(24, 14) = .Cells(Zeile, 5)
.Cells(24, 15) = Zeile
.Cells(24, 16) = .Cells(Zeile, 7)
End If
If MsgBox("Weitersuchen?", _
vbQuestion + vbYesNo, _
"Dienstplan-Kombi") = vbNo Then Exit For
End If
End If
Next Zeile
End With
End Sub

Anzeige
AW: Vielen vielen Dank
27.05.2015 23:52:22
oliver
Vielen Dank für die rasche Antwort, habs jetzt folgendermaßen geschafft- speichere den Index des passenden Dienstes wenn Bedingungen erfüllt sind.
Dein Ansatz mit String finde ich die viel schönere Lösung, meinen Code werde ich daher Schritt für Schritt ausmisten.
lg Oliver

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige