Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1772to1776
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

InputBox in IfAbfrage

InputBox in IfAbfrage
20.07.2020 10:52:52
Christian
Hallo
Ich habe eine Excel-Datei für meine Diensteinteilung gemacht.
Da soll dann in einem Blatt per Makro pro Tag die Werte aus einer anderen ( durch Formel gefüllte Tabelle ) die Werte geholt werden.
Das funktioniert.
Nun soll er aber noch durch eine If Abfrage, wenn bei dem Namen für diesen Tag kein Wert steht, also an diesem nicht eingeteilt war, eine Inputbox kommen, wo ich eingeben kann was er an diesem Tag gemacht hat ( Urlau, Rollfrei, Überstundenabbau, usw. ). Dies soll dann eingetragen werden.
Es kann auch sein dass in einer Zeile in der 1. Spalte kein Name steht auch dann soll er die Inputbox nicht anzeigen sondern eine leere Zelle machen.
Die Inputbox wird angezeigt, jedoch für jede Zeile, auch wenn ein Wert vorhanden ist oder der Name fehlt.
In der Inputbox werden mir nicht die Werte angezeigt die ich für i ( meine Variable zum durchsuchen der Zeilen ) und die Spaltennummer suche, sondern i -1, also die Zeile darüber.
Wenn ich Werte eintrage, werden diese nicht übernommen.
Was mache ich falsch?
Vielleicht kann mir jemand helfen. Hab mich schon durch etliche Artikel und Videos gegooglt und ausprobiert.
Danke schon mal im voraus.
Sub IfThenElse_Tag13a()
'Variable festlegen
Dim i As Integer
Dim strInputBox As String
Dim ZustellerName As String
Dim ZustellTag As String
For i = 42 To 74
ZustellTag = Day(Range("AH41").Value) & "." & Month(Range("A41")) & "." & Year(Range("A41")) _
strInputBox = Application.InputBox("Bitte Wert eingeben für " & ZustellerName, ZustellTag, , _
, , , , 3)
'Wenn Bezirk eingetragen --> in anderes Blatt übertragen
If Worksheets("Erfassung (Formel)").Cells(i, 37).Value > 60 Then
Worksheets("Erfassung").Cells(i, 37).Value = Worksheets("Erfassung (Formel)").Cells( _
i, 37).Value
ElseIf Cells(i, 1) = "" Then
Cells(i, 37) = ""
Else
Worksheets("Erfassung").Cells(i + 1, 37).Value = strInputBox
End If
ZustellerName = Cells(i, 1)
Next
End Sub

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: InputBox in IfAbfrage
20.07.2020 18:49:28
fcs
Hallo Christian,
die Logik bei der Reihenfolge wann der Name in die Variable eingelesen wird stimmt nicht. Dadurch wird immer der Name aus der vorherigen Zeile in der Inputbox angezeigt.
Die Anweisung zur Anzeige der Inputbox musst du in den Else-Abschnitt deiner Prüfungen verschieben.

Sub IfThenElse_Tag13a()
'Variable festlegen
Dim i As Integer
Dim strInputBox As String
Dim ZustellerName As String
Dim ZustellTag As String
For i = 42 To 74
ZustellTag = Day(Range("AH41").Value) & "." & Month(Range("A41")) & "." & Year(Range(" _
A41"))
ZustellerName = Cells(i, 1).Text
'Wenn Bezirk eingetragen --> in anderes Blatt übertragen
If Worksheets("Erfassung (Formel)").Cells(i, 37).Value > 60 Then
Worksheets("Erfassung").Cells(i, 37).Value = _
Worksheets("Erfassung (Formel)").Cells(i, 37).Value
ElseIf ZustellerName = "" Then
Cells(i, 37) = ""
Else
strInputBox = Application.InputBox("Bitte Wert eingeben für " & ZustellerName,  _
ZustellTag, Type:=3)
Worksheets("Erfassung").Cells(i + 1, 37).Value = strInputBox
End If
Next
End Sub

LG
Franz
Anzeige
AW: InputBox in IfAbfrage
20.07.2020 19:03:29
Christian
Hallo
Danke für deine Antwort.
Jetzt wird die Inputbox leider nicht mehr angezeigt.
Er holt sich die Werte aus der Excel-Tabelle, aber wenn die Zelle leer ist, öffnet sich die Inputbox nicht.
AW: InputBox in IfAbfrage
21.07.2020 07:37:35
fcs
Hallo Christian,
wenn die Inputbox nicht angezeigt wird, dann
wird immer die Bedingung
Worksheets("Erfassung (Formel)").Cells(i, 37).Value > 60

erfüllt.
oder die Zelle mit Namen ist leer.
Da kann ich dir nicht weiterhelfen, da musst du die Logik der Prüfungen nochmals sauber durchdenken.
Evtl eine Prüfung wie
If Cells(i, 37).Text = "" And ZustellerName  "" then
als erste Prüfung verwenden, um die Inputbox anzuzeigen. Da du ja mit verschiedene Tabellenblättern arbeitest solltest du vor Range oder Cells immer Tabellenblatt mit angeben, evtl. passen dann ja auch deine Prüfungen.
LG
Franz
Anzeige
AW: InputBox in IfAbfrage
21.07.2020 09:00:55
Christian
Hallo Franz
muss ich evtl eine 2. If Schleife einbauen?
Wenn die erste Schleife die Bezirke ( >60 ) holt, und wenn nichts drin steht dann "" macht.
In der 2. Schleife dann

If Cells(i, 37).Text = "" And ZustellerName  "" then
inputbox

oder darf ich mich nur nicht auf die Zelle beziehen, in der sich die If Schleife befindet, _ sondern muss mich auch auf die Ausgangstabelle beziehen, wenn da kein wert drin steht? Dann wahrscheinlich

.Value  = ""

Da sich da ja ne Formel drin verbirgt?

Anzeige
AW: InputBox in IfAbfrage
21.07.2020 09:20:34
Christian
Habe jetzt mal 2 andere Sachen versucht
ne 2. If Then Else schleife dran gehängt.
Dann holt er die Werte nicht mehr ( die Zellen bleiben leer ), aber ich kann die für die leeren Zellen meine anderen Werte über die Box eintragen.
Dann habe ich versucht das Else nochmal als If Then Else Schleife zu machen
Sub IfThenElse_Tag13a()
'Variable festlegen
Dim i As Integer
Dim strInputBox As String
Dim ZustellerName As String
Dim ZustellTag As String
For i = 42 To 74
ZustellTag = Day(Range("AH41").Value) & "." & Month(Range("A41")) & "." & Year(Range( _
"A41"))
ZustellerName = Cells(i, 1).Text
'Wenn Bezirk eingetragen --> in anderes Blatt übertragen
If Worksheets("Erfassung (Formel)").Cells(i, 37).Value > 60 Then
Worksheets("Erfassung").Cells(i, 37).Value = Worksheets("Erfassung (Formel)"). _
Cells(i, 37).Value
ElseIf ZustellerName = "" Then
Cells(i, 37) = ""
Else
If Worksheets("Erfassung (Formel)").Cells(i, 37).Value = "" And ZustellerName =  _
"" Then
strInputBox = Application.InputBox("Bitte Wert eingeben für " & ZustellerName,  _
ZustellTag, Type:=3)
Worksheets("Erfassung").Cells(i + 1, 37).Value = strInputBox
Else: Cells(i, 37) = ""
End If
End If
Next
End Sub
dann wieder nur die Werte über 60 und keine Inputbox
Anzeige
AW: InputBox in IfAbfrage
21.07.2020 09:37:41
Christian
Jetzt noch was versucht und der Lösung ganz nahe
Sub IfThenElse_Tag13a()
'Variable festlegen
Dim i As Integer
Dim strInputBox As String
Dim ZustellerName As String
Dim ZustellTag As String
For i = 42 To 74
ZustellTag = "13" & "." & Month(Range("A41")) & "." & Year(Range("A41"))
ZustellerName = Cells(i, 1).Text
'Wenn Bezirk eingetragen --> in anderes Blatt übertragen
If Worksheets("Erfassung (Formel)").Cells(i, 37).Value  "" And Worksheets(" _
Erfassung (Formel)").Cells(i, 1).Value  "" Then
Worksheets("Erfassung").Cells(i, 37).Value = Worksheets("Erfassung (Formel)"). _
Cells(i, 37).Value
Else
strInputBox = Application.InputBox("Bitte Wert eingeben für " & ZustellerName,  _
ZustellTag, Type:=3)
Worksheets("Erfassung").Cells(i, 37).Value = strInputBox
End If
Next
End Sub
jetzt wird mir die InputBox angezeigt wenn die Zelle leer ist, und die Werte übertragen wenn welche da sind.
Aber es werden noch für die Zellen InputBox angezeigt, wo der Zustellername ( also I, 1), leer ist.
hab es schon mit Or statt And, und mit gleich statt ungleich probiert.
Wenn das jetzt noch klappt, das wär super
Anzeige
AW: InputBox in IfAbfrage
21.07.2020 11:29:55
Christian
Auch schön wäre eine Listbox in der Inputbox, so dass man nur vorgegebene Werte eingeben kann.
Am Besten auch noch z.B.
"Freier Tag" angezeigt bekommen --> aber "p" in die Tabelle Eintragen
"Urlaub" angezeigt bekommen --> aber "EU" in die Tabelle eintragen

AW: InputBox in IfAbfrage
21.07.2020 21:09:47
fcs
Hallo Christian,
wenn du mit einer Listbox arbeiten willst, dann müsste man das Ganze als Userform aufbauen.
Mit der Inputbox gibt es im Prinzip 2 Varianten, wenn es nicht zu viele verschiedene Einträge sind.
a) eingabe des Buchstabens
b) Eingabe einer ID-Nr.
Zur Erleichterung der Eingabe werden im Text der Inputbox die Ziffern/der Buchstabe + der Langtext mit angezeigt.
Im Code wird dann die Eingabe per select Case Anweisung geprüft und in den gewünschten Tabelleneintrag übersetzt.
Welchen Weg willst du hier gehen?
Sinnvoller weise würdest du hier eine abgspeckte/anonymisierte Datei hier hochladen, so dass ich dir weiterhelfen kann.
Beim Feinschliff für die If-Prüfungen kann ich dir ohne Beispieldaten nicht weiterhelfen - dass muss du selber austüffteln . Am besten ein Ablaufdiagramm malen und festlegen welche Zellinbhalte geprüft werden müssen, damit das Ergebnis jeweils eindeutig ist. Manchmal spielt es auch eine Rolle in welcher eihenfolge man die Prüfungen macht, um mit geringstem AUFWAND ZUM Ziel zu kommen.
LG
Franz
Anzeige
AW: InputBox in IfAbfrage
22.07.2020 06:55:55
Christian
Hallo Franz
Datei ist mit 1MB zu groß zum Upload.

http://gofile.me/4WzsD/J0B6Nh3Wv

hier mal der Link zur Datei
Es muss nur klar und verständlich sein, auch für andere die dann den Dienstplan machen, wenn ich Urlaub habe oder krank bin.
AW: InputBox in IfAbfrage
22.07.2020 10:20:17
Christian
ich würde auch gerne einen Druck-Button einfügen, der von 2 Verschiedenen Blättern bestimmte Zellen als 1 PDF speichert.
mein Versuch der Lösung:
Sub PDF_Export()
'Select Druckbereich
Sheets(Array("Dienstplan"A1:DB86", "Erfassung"A1:BV76")).Select
'Create and assign variables
Dim saveLocation As String
saveLocation = "/Volumes/#####/Post - Teamleiter/Diensteinteilung.pdf"
'Save selection as PDF
Selection.ExportAsFixedFormat Type:=xlTypePDF, _
FileName:=saveLocation
End Sub

Anzeige
AW: InputBox in IfAbfrage
22.07.2020 10:27:01
Christian
bei dem Post zuvor hab ich das Häkchen vergessen, dass es noch nicht abgeschlossen ist.
gibt es bestimmt schon im Forum und ich würde mich auch selber mal dran versuchen.
Unter der Diensteinteilung wird für die Kalenderwoche angezeigt wer Urlaub hat.
Dies wird aus einer anderen Mappe geholt.
leider kann man da nur die Werte ohne Formatierung holen.
Fett wäre "genehmigter Urlaub", also da kann man geholt werden
Normal gedruckt kann man geholt werden
dies soll man angeblich per VBA lösen können.
Für Tips wär ich dankbar
AW: InputBox in IfAbfrage
23.07.2020 06:09:19
fcs
Hallo Christian,
der Link zum Hochladen der Datei funktioniert bei mir nicht.
Stelle hier nochmals einen funktionierenden Link ein oder Schicke die Datei als Anhang an die in meinem Profil genante E-Mail-Adresse.
PDF-Speichern:
Das speichern einer Bereichs-Auswahl funktioniert nur mit einem Tabellenblatt.
Lege in den beiden Blättern die Bereiche, die als PDF gespeichert werden sollen jeweils als Druckbereich fest. Dann kannst du sie auch als gruppierte Blätter in einer PDF speichern.
Nicht vergessen: Nach dem Speichern als PDF die Gruppierung wieder aufheben, damit nicht versehentlich Zellen in beiden Blätern geändert werden.
LG
Franz
Anzeige
AW: InputBox in IfAbfrage
26.07.2020 08:40:51
Christian
Guten Morgen Franz
Hast du meine Tabelle per Mail bekommen?
AW: InputBox in IfAbfrage
26.07.2020 16:08:10
fcs
Hast du meine Tabelle per Mail bekommen?
Ja Datei ist angekommen, ich muss mich da jetzt erst einmal einlesen.
LG
Franz
AW: InputBox in IfAbfrage
26.07.2020 16:09:47
Christian
Alles klar
Danke
Nicht dass bei den Junk-Mails gelandet ist
AW: InputBox in IfAbfrage
31.07.2020 21:20:00
Christian
Möchte mich nochmal bei Franz und dem Forum bedanken, dass er mir geholfen hat es nicht nur zum laufen zu kriegen, sondern es nochmal auf eine ganz andere Stufe zu setzen.
Das Problem analysiert und statt meiner 62 Makros hat er es alles in einem Makro verbaut und sieht Klasse aus.
Was will man mehr.
DANKE
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige