Verbindung meiner selbstgebauten MessageBox
01.04.2024 13:03:05
Hoffi38
ich stehe vor einem Problem.
Ich möchte gerne meine selbst gebaute Message box mit einem bestehenden VBA code verbinden.
Und zwar soll die MSGBox sich öffnen nachdem ich auf den BTN in der bereits geöffneten UserForm geklickt habe.
Das geschieht auch aber.....
Wenn ich den Löschen BTN in der UserForm klicke werden daten bereits in eine weitere Tabelle Übertragen. (Dokumentations zwecken)
Das soll auch weiterhin geschehen jedoch erst wenn ich auf löschen in der dann Erschienenen MSGBox drücke.
Was auch passieren soll ist das sich die Aktive Zeile woraus ich die Userform gerufen habe löschen soll.
Das Passiert auch wenn ich bei der MSGBox löschen anklicke.
Das Problem ist aber jetzt das wenn ich den vorgang in der MSGBox abbreche habe ich trotzdem in der Dokumentations Tabelle den
gelöschten Eintrag. Das ist so nicht gewollt.
Kann mir da jemand die erleuchtung bringen :-)?
Das ist der code in der UserFormLöschen:
Private Sub btnLöschen_Click()
'Prüfung, ob Mitarbeiterfeld ausgefüllt ist
If cbMitarbeiter.Value = "" Then
MsgBox " Bitte den Mitarbeiter Eintragen.", , ""
Exit Sub
End If
'Abfrage und Aufruf der MessageboxLöschen
Call MessageBoxLöschen_Einblenden
'Daten ins Tabellenblatt 2 einfügen
Dim neuZeile As Long
With Tabelle2
neuezeile = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Cells(neuezeile, 2).Value = TextBoxDatum.Value
.Cells(neuezeile, 3).Value = TextBoxArtikelnummerHECO.Value
.Cells(neuezeile, 4).Value = TextBoxArtikelnummerKunde.Value
.Cells(neuezeile, 5).Value = TextBoxKunde.Value
.Cells(neuezeile, 6).Value = TextBoxArtikelBezeichnung.Value
.Cells(neuezeile, 7).Value = TextBoxZustand.Value
.Cells(neuezeile, 8).Value = TextBoxBemerkung.Value
.Cells(neuezeile, 12).Value = TextBoxEinspritzflansch.Value
.Cells(neuezeile, 14).Value = TextBoxFormhälfteOben.Value
.Cells(neuezeile, 16).Value = TextBoxFormhälfteUnten1.Value
.Cells(neuezeile, 18).Value = TextBoxFormhälfteUnten2.Value
.Cells(neuezeile, 20).Value = TextBoxTopf.Value
.Cells(neuezeile, 21).Value = TextBoxFass.Value
.Cells(neuezeile, 23).Value = cbMitarbeiter.Value
.Cells(neuezeile, 22).Value = IIf(OptionButtonLöschen, "Gelöscht", "---")
End With
'UserFormNeu schließen
Unload Me
End Sub
Private Sub UserForm_Initialize()
'Daten aus Tabelle 1 in UserFormLöschen einlesen
TextBoxID.Text = Cells(ActiveCell.Row, 2)
TextBoxKunde.Text = Cells(ActiveCell.Row, 5)
TextBoxArtikelnummerKunde.Text = Cells(ActiveCell.Row, 4)
TextBoxArtikelnummerHECO.Text = Cells(ActiveCell.Row, 3)
TextBoxEinspritzflansch.Text = Cells(ActiveCell.Row, 12)
TextBoxFormhälfteUnten1.Text = Cells(ActiveCell.Row, 16)
TextBoxTopf.Text = Cells(ActiveCell.Row, 20)
TextBoxZustand.Text = Cells(ActiveCell.Row, 7)
TextBoxArtikelBezeichnung.Text = Cells(ActiveCell.Row, 6)
TextBoxBemerkung.Text = Cells(ActiveCell.Row, 8)
TextBoxFormhälfteOben.Text = Cells(ActiveCell.Row, 14)
TextBoxFormhälfteUnten2.Text = Cells(ActiveCell.Row, 18)
TextBoxFass.Text = Cells(ActiveCell.Row, 21)
'Combobox Mitarbeiter befüllen
cbMitarbeiter.List = Tabelle3.ListObjects("tblMitarbeiter").DataBodyRange.Value
'OptionButtonLöschen auswählen
OptionButtonLöschen.Value = True
End Sub
'Einfärbung btn_Löschen
Private Sub btnLöschen_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
btnLöschen.BackColor = RGB(238, 0, 0)
End Sub
'Rückfärbung btn_Speichern
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
btnLöschen.BackColor = RGB(255, 255, 255)
End Sub
'Das aktuelle Datum Automatisch einfügen
Private Sub UserForm_Activate()
TextBoxDatum = Date
End Sub
Und das ist der Code im Modul2 für die Selbstgebaute MSGBox
(dieser soll so eingebunden werden wie es oben steht)
Option Explicit
Sub MessageBoxLöschen_Einblenden()
'Blattschutz aktivieren
Tabelle1.Protect DrawingObjects:=True
'MessageBoxLöschen Einblenden
Tabelle1.Shapes("MessageBoxLöschen").Visible = True
End Sub
Sub MessageBoxLöschen_Ausblenden()
'MessageboxLöschen ausblenden
Tabelle1.Shapes("MessageBoxLöschen").Visible = False
End Sub
Sub ZeileLöschen()
'Blattschutz deaktivieren
Tabelle1.Unprotect
'Aktive Zeile Löschen
ActiveCell.EntireRow.Delete
'MessageboxLöschen ausblenden
Tabelle1.Shapes("MessageBoxLöschen").Visible = False
End Sub
https://www.herber.de/bbs/user/168427.xlsm