Supportnet / Forum / Tabellenkalkulation
MsgBox mit variablen Text und davon abhängigen Ereignis
Frage
Hallo Leute!
Ich schonwieder mit meiner nächsten Idee..nur leider keine Lösung :-(!!!
Aber darum bin ich ja sooo froh euch hier gefunden zu haben.
Also ich habe in Spalte A26 - A85 Namen.(Natürlich nicht zwingend alle ausgefüllt)
Nun möchte ich beim öffnen des Sheets, eine MsgBox, die nacheinander abfragt:"War der Kollege _ Name aus Tabelle _ heute anwesend?"
Über die JA / NEIN Feder soll dann entschieden werden, ob in die nächste freie Zelle rechts neben dem entsprechenden NAmen ein Kreuz kommt oder eben nicht.
Diese MsgBox soll dann nacheinander alle abfragen, und wenn der letzte Name abgefragt ist, dann einfach verschwinden.
Leider kann ich nur verbal danken, also tue ich dies schonmal im Voraus..
Gruß der Nore
Antwort 1 von Ahnan
Hallo,
also wenn ich das richtig verstanden habe:
Option Explicit
Private Sub Workbook_Open()
Dim i As Integer, erg As Integer
Sheets("Tabelle1").Activate
For i = 26 To 85
If ActiveSheet.Cells(i, 1).Value > "" Then
erg = MsgBox("War der Kollege " & ActiveSheet.Cells(i, 1).Value & " heute anwesend ?", vbQuestion + vbYesNo, "Heute anwesend ?")
If erg = vbYes Then
ActiveSheet.Cells(i, 2).Value = "X"
End If
End If
Next i
End Sub
Der Code muss in das Ereignis der Arbeitsmappe. Leere Zellen innerhalb von A26:A85 werden nicht abgefragt. Der Tabellenname, in der die Namen stehen, heißt bei mit "Tabelle1". Musst du bei Sheets("Tabelle1").Activate entsprechend ändern !
Gruss
also wenn ich das richtig verstanden habe:
Option Explicit
Private Sub Workbook_Open()
Dim i As Integer, erg As Integer
Sheets("Tabelle1").Activate
For i = 26 To 85
If ActiveSheet.Cells(i, 1).Value > "" Then
erg = MsgBox("War der Kollege " & ActiveSheet.Cells(i, 1).Value & " heute anwesend ?", vbQuestion + vbYesNo, "Heute anwesend ?")
If erg = vbYes Then
ActiveSheet.Cells(i, 2).Value = "X"
End If
End If
Next i
End Sub
Der Code muss in das Ereignis der Arbeitsmappe. Leere Zellen innerhalb von A26:A85 werden nicht abgefragt. Der Tabellenname, in der die Namen stehen, heißt bei mit "Tabelle1". Musst du bei Sheets("Tabelle1").Activate entsprechend ändern !
Gruss
Antwort 2 von JoeKe
Hallo Nore,
oder so:
Option Explicit
Sub abfrage()
Dim i As Integer, abfrage As String
For i = 26 to 85
If Range("A" & i).Value = "" Then i = i + 1
abfrage = MsgBox("War der Kollege " & Range("A" & i) & " heute anwesend?", vbYesNo)
If abfrage = vbYes Then Cells(i, 2) = "X"
Next
End Sub
MfG
JöKe
oder so:
Option Explicit
Sub abfrage()
Dim i As Integer, abfrage As String
For i = 26 to 85
If Range("A" & i).Value = "" Then i = i + 1
abfrage = MsgBox("War der Kollege " & Range("A" & i) & " heute anwesend?", vbYesNo)
If abfrage = vbYes Then Cells(i, 2) = "X"
Next
End Sub
MfG
JöKe
Antwort 3 von Noreia
Hallo Ahnan, Hallo JöKe!
Eure Lösungen funktionieren beide. Es gibt nur ein Problem, dass ich nicht bedacht habe. Die Zellen in denen kein Name steht, sind nicht leer, sondern da steht ne Funktion drin. Die MsgBox gibt demnach immer den Wert 0 zurück.
Gibt es da Abhilfe?
MFG Nore
Eure Lösungen funktionieren beide. Es gibt nur ein Problem, dass ich nicht bedacht habe. Die Zellen in denen kein Name steht, sind nicht leer, sondern da steht ne Funktion drin. Die MsgBox gibt demnach immer den Wert 0 zurück.
Gibt es da Abhilfe?
MFG Nore
Antwort 4 von Ahnan
Hallo,
vielleicht über die Zeichenlänge:
Alle Namen (in den Zellen), welche mehr als ein Zeichen lang sind, werden berücksichtigt. Also wird die Null ausgeschlossen. Allerdings würde auch jeder Name, der nur EIN Zeichen lang ist, ausgeschlossen. Aber solche Namen sind ja eher nicht zu erwarten:
Dim i As Integer, erg As Integer
Private Sub Workbook_Open()
Sheets("Tabelle1").Activate
For i = 26 To 85
If Len(Cells(i, 1)) > 1 Then
erg = MsgBox("War der Kollege " & ActiveSheet.Cells(i, 1).Value & " heute anwesend ?", vbQuestion + vbYesNo, "Heute anwesend ?")
If erg = vbYes Then
ActiveSheet.Cells(i, 2).Value = "X"
End If
End If
Next i
End Sub
Gruss
vielleicht über die Zeichenlänge:
Alle Namen (in den Zellen), welche mehr als ein Zeichen lang sind, werden berücksichtigt. Also wird die Null ausgeschlossen. Allerdings würde auch jeder Name, der nur EIN Zeichen lang ist, ausgeschlossen. Aber solche Namen sind ja eher nicht zu erwarten:
Dim i As Integer, erg As Integer
Private Sub Workbook_Open()
Sheets("Tabelle1").Activate
For i = 26 To 85
If Len(Cells(i, 1)) > 1 Then
erg = MsgBox("War der Kollege " & ActiveSheet.Cells(i, 1).Value & " heute anwesend ?", vbQuestion + vbYesNo, "Heute anwesend ?")
If erg = vbYes Then
ActiveSheet.Cells(i, 2).Value = "X"
End If
End If
Next i
End Sub
Gruss
Antwort 5 von Noreia
So funktioniert es gut. Danke vielmals..und
bis zu meiner nächsten"IDEE"!!!
MFG Nore
bis zu meiner nächsten"IDEE"!!!
MFG Nore

