Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Nachrichtensystem
#1
Hallo an alle hier!
Ich möchte ein kleines Nachrichtensystem für Mitarbeiter bauen.

Meine Frage, wie kann ich den code anpassen. dass er bei Mitarbeiterauswahl die richtige Zeile zum eintragen findet?

     B                          C                D
5   Mitarbeiter            Datum        Nachricht
6   Mitarbeiter 1
7   Mitarbeiter 2
8   usw.

19

Code:
Private Sub cmdspeichern_Click()
'Daten speichern, Formular schließen

Dim last As Long

Dim lngSuch
Dim LRow As Long
Dim rngC As Range

If txtMitarbeiter = "" Then
MsgBox ("Bitte das Felder " & """" & "Mitarbeiter" & """" & " ausfüllen!")
Exit Sub
End If

If txtNachricht = "" Then
MsgBox ("Bitte Nachricht eingeben!")
Exit Sub
End If


lngSuch = Me.txtMitarbeiter.Value

Set rngC = Range("B5:B19").Find(lngSuch, _
   Range("B19"), xlValues)

With Eintragen
   If rngC Then
   
   ActiveSheet.Cells(last, 2).Value = Me.txtMitarbeiter.Value
   ActiveSheet.Cells(last, 3).Value = Format((Date), "dd.mm.yyyy")
   ActiveSheet.Cells(last, 4).Value = Me.txtNachricht.Value
     
MsgBox ("Die Nachicht an " & """" & Me.txtMitarbeiter.Value & """" & " wurde gespeichert!")

   Else
 
MsgBox ("Die Nachicht an " & """" & Me.txtMitarbeiter.Value & """" & " konnte nicht gespeichert werden!")


End If

End With

Unload Me
End Sub

Danke für Eure Hinweise
Antworten Top
#2
Hallo,

Code:
Private Sub cmdspeichern_Click()
  'Daten speichern, Formular schließen
  
  Dim varF As Variant
  
  If Me.txtMitarbeiter.Value = "" Then
    MsgBox ("Bitte das Felder " & """" & "Mitarbeiter" & """" & " ausfüllen!")
    Exit Sub
  End If
  If Me.txtNachricht.Value = "" Then
    MsgBox ("Bitte Nachricht eingeben!")
    Exit Sub
  End If
  
  With Range("B6:B19")
    varF = Application.Match(Me.txtMitarbeiter.Value, .Cells, 0)
    If IsNumeric(varF) Then
      .Cells(varF, 2).Value = Date
      .Cells(varF, 3).Value = Me.txtNachricht.Value
      MsgBox ("Die Nachicht an " & """" & Me.txtMitarbeiter.Value & """" & " wurde gespeichert!")
    Else
      MsgBox ("Die Nachicht an " & """" & Me.txtMitarbeiter.Value & """" & " konnte nicht gespeichert werden!")
    End If
  End With
  
  Unload Me
End Sub

Gruß, Uwe
Antworten Top
#3
Erstmal vielen Dank @ Uwe

Mein Code:
Code:
Private Sub cmdspeichern_Click()
  'Daten speichern, Formular schließen
 
  Dim varF As Variant
 
  If Me.txtMitarbeiter.Value = "" Then
    MsgBox ("Bitte das Felder " & """" & "Mitarbeiter" & """" & " ausfüllen!")
    Exit Sub
  End If
  If Me.txtNachricht.Value = "" Then
    MsgBox ("Bitte Nachricht eingeben!")
    Exit Sub
  End If
 
  With Range("B5:B19")
    varF = Application.Match(Me.txtMitarbeiter.Value, .Cells, 0)
    If IsNumeric(varF) Then
      Worksheets("Nachrichten").Cells(varF, 3).Value = Sheets("Hilfstabelle").Range("D75").Value
      Worksheets("Nachrichten").Cells(varF, 4).Value = Format((Date), "dd.mm.yyyy")
      Worksheets("Nachrichten").Cells(varF, 5).Value = Me.txtNachricht.Value
      MsgBox ("Die Nachicht an " & """" & Me.txtMitarbeiter.Value & """" & " wurde gespeichert!")
    Else
      MsgBox ("Die Nachicht an " & """" & Me.txtMitarbeiter.Value & """" & " konnte nicht gespeichert werden!")
    End If
  End With
 
  Unload Me
End Sub

Nur schreibt er nicht die Daten in die zeile des angegebenen Mitarbeiters.
Antworten Top
#4
(11.08.2023, 15:28)Andyle schrieb: Mein Code:
...
Nur schreibt er nicht die Daten in die zeile des angegebenen Mitarbeiters.

Veralbern kann ich mich selber.
Antworten Top
#5
Speichern funzt, allerdings immer einen Mitarbeiter höher als er soll.
Antworten Top
#6
Ich habe es jetzt so gelöst und es funzt wunderbar.

Worksheets("Nachrichten").Cells(varF + 1, 2).Value = Me.txtbetreff.Value
Antworten Top
#7
Da hast du aber Glück gehabt, denn Dein Code ergibt keinen Sinn. Mal sehen, ob das für Immer funktioniert Wink
Antworten Top
#8
War ein Vorschlag von @ Uwe!

Bis jetzt funzt alles, auch mit Zelleninhalt löschen.
Antworten Top
#9
Ja der Vorschlag von Uwe ist ja auch gut, aber du hast es ein bisschen "kaputt" gemacht Wink

Denn Uwe wendet die gefundene Zeile auf dieselbe Range an in der er sie gefunden hat. with Range und dann .Cells

Code:
With Range("B6:B19")

    varF = Application.Match(Me.txtMitarbeiter.Value, .Cells, 0)

    If IsNumeric(varF) Then

      .Cells(varF, 2).Value = Date

      .Cells(varF, 3).Value = Me.txtNachricht.Value

Du allerdings nimmst den Wert der in der Range B5:B19 gefunden wird und wendest ihn auf eine ganz ander Range an.

Code:
With Range("B5:B19")

    varF = Application.Match(Me.txtMitarbeiter.Value, .Cells, 0)

    If IsNumeric(varF) Then

      Worksheets("Nachrichten").Cells(varF, 3).Value = Sheets("Hilfstabelle").Range("D75").Value

      Worksheets("Nachrichten").Cells(varF, 4).Value = Format((Date), "dd.mm.yyyy")

      Worksheets("Nachrichten").Cells(varF, 5).Value = Me.txtNachricht.Value

Worksheets("Nachrichten").Cells(varF startet sozusagen am Anfang des Arbeitsblattes

Wie gesagt, ich habe es nicht getestet, bin aber überrascht, dass es nur um eine Zeile abweicht und nicht 5 Wink
Antworten Top
#10
Vielen Dank!
Hab es abgeändert und jetztz funzt es alles!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste