Clever-Excel-Forum

Normale Version: Nachrichtensystem
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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
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
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.
(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.
Speichern funzt, allerdings immer einen Mitarbeiter höher als er soll.
Ich habe es jetzt so gelöst und es funzt wunderbar.

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

Bis jetzt funzt alles, auch mit Zelleninhalt löschen.
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
Vielen Dank!
Hab es abgeändert und jetztz funzt es alles!