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

Eingabemaske von Exel

Eingabemaske von Exel
30.11.2021 13:56:55
Exel
ich möchte die in Exel bereits vorhandene Eingabemaske gebrauchen um in einer Tabelle Werte per VBA einzutragen, zu editieren bzw. zu löschen.
Gibt es den Code dafür irgendwo?
Die Maske erfüllt im Grunde so alles was ich vorhabe, möchte sie nur selber in meinem vorhandenen Programm einbauen.
Kann mir jemand helfen?

43
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eingabemaske von Exel
30.11.2021 14:18:56
Exel
Hi,
das Dialogfeld für die "Maske" rufst Du auf mit:
ActiveSheet.ShowDataForm
VG, Boris
AW: Eingabemaske von Exel
30.11.2021 14:39:18
Exel
das funktioniert leider nicht, da ich mich beim Aufruf nicht auf dem Tabellenblatt befinde wo ich die Daten habe.
Ich möchte in dem Tabellenblatt "Vorbelegung" mir die Daten aus der Tabelle "Hausverwaltungen" anzeigen lassen, diese editieren können oder löschen können und einen neuen Datensatz eingeben.
Die Exeleingabemaske ist von der Funktion her schon ok, ich möchte Sie nur per VBA umgestalten und anpassen.
AW: Eingabemaske von Exel
30.11.2021 14:59:01
Exel

ich möchte Sie nur per VBA umgestalten und anpassen.
Lasse mich da gern eines besseren belehren, aber ich behaupte erstmal: eine eigene Userform zu erstellen die exakt das macht was du möchtest geht in einem Bruchteil der Zeit die du bräuchtest, um die Eingabemaske zu bändigen - wenn das überhaupt geht.
LG,
Klaus M.
Anzeige
AW: Eingabemaske von Exel
30.11.2021 21:53:58
Exel
Hallo Klaus,
habe nun eine gebastelt, funktioniert leider noch nicht so wie ich es mir vorstelle.
1. Beim Öffnen der UserForm wird mir aus der Tabelle "Hausverwaltungen" kein Datensatz angezeigt
2. Klar, dann kann ja auch nicht der vor und zurück Button funktionieren
aber erst einmal Schritt für Schritt, ich lerne jeden Tag dazu
'Beim Öffnen soll der erste Datensatz der Tabelle Hausverwaltungen im Formular angezeigt werden

Private Sub HausverwaltungEingabe_Initialize()
Sheets("Hausverwaltungen").Visible = True
Sheets("Hausverwaltungen").Select
NameHausverwaltung = Sheets.Hausverwaltungen(Zeile, 1)
NrHausverwaltung = Sheets.Hausverwaltungen(Zeile, 2)
StrasseNr = Sheets.Hausverwaltungen(Zeile, 3)
PLZ = Sheets.Hausverwaltungen(Zeile, 4)
Ort = Sheets.Hausverwaltungen(Zeile, 5)
Telefon = Sheets.Hausverwaltungen(Zeile, 6)
Emailadresse = Sheets.Hausverwaltungen(Zeile, 7)
End Sub
'speichert den neuen Datensatz

Private Sub ButtonEintragen_Click()
'erste freie Zeile ausfindig machen
Dim last As Integer
Sheets("Hausverwaltungen").Visible = True
Sheets("Hausverwaltungen").Select
last = Sheets("Hausverwaltungen").Cells(Rows.Count, 1).End(xlUp).Row + 1
'Name der Hausverwaltung
Cells(last, 1).Value = NameHausverwaltung
'Nr. der Hausverwaltung
Cells(last, 2).Value = NrHausverwaltung
'Strasse und Hausnummer der Hausverwaltung
Cells(last, 3).Value = StrasseNr
'PLZ
Cells(last, 4).Value = PLZ
'Ort
Cells(last, 5).Value = Ort
'Telefon
Cells(last, 6).Value = Telefon
'Emailadresse der Hausverwaltung
Cells(last, 7).Value = Emailadresse
Range("A1:G51").Sort Key1:=Range("A2"), Header:=xlYes
Sheets("Hausverwaltungen").Visible = False
Unload HausverwaltungEingabe
End Sub
'Formular schließen ohne zu speichern

Private Sub ButtonCancel_Click()
Unload Me
End Sub
'Löscht den angezeigten Datensatz

Private Sub ButtonLöschen_Click()
Cells(ActiveCell.Row, ActiveCell.Column).EntireRow.Delete
End Sub
'geht weiter zum nächsten Datensatz

Private Sub ButtonNächste_Click()
ActiveCell.Offset(1, 0).Select
End Sub
'Geht zurück zum vorherigen Datensatz

Private Sub ButtonVorherige_Click()
End Sub
'Geht zum ersten freien Datensatz

Private Sub ButtonNeu_Click()
End Sub
'Fehlermeldung, wenn versucht wird, die UserForm über das
'Schließenkreuz oben rechts zu schließen

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
MsgBox "Bitte verlassen Sie die Eingabemaske" & vbLf & "nur mit der Schaltfläche - Schließen.", _
vbOKOnly + vbInformation, "Bitte betätigen."
Cancel = 1
End If
End Sub

Anzeige
AW: Eingabemaske von Exel
30.11.2021 16:03:36
Exel
Habe mir nun eine eigene Maske gebastelt. Klappt soweit ganz gut. Es fehlt noch, dass beim Aufruf der Maske die Datensätze direkt angezeigt werden. Und drei Button hab ich noch nicht so richtig hin bekommen: Nächster Datensatz, Vorheriger Datensatz und Löschen
'Beim Öffnen sollen alle Datensätze der Tabelle Hausverwaltungen angezeigt werden

Private Sub HausverwaltungEingabe_Initialize()
End Sub
'speichert den neuen Datensatz

Private Sub ButtonEintragen_Click()
'erste freie Zeile ausfindig machen
Dim last As Integer
Sheets("Hausverwaltungen").Visible = True
Sheets("Hausverwaltungen").Select
last = Sheets("Hausverwaltungen").Cells(Rows.Count, 1).End(xlUp).Row + 1
'Name der Hausverwaltung
Cells(last, 1).Value = NameHausverwaltung
'Nr. der Hausverwaltung
Cells(last, 2).Value = NrHausverwaltung
'Strasse und Hausnummer der Hausverwaltung
Cells(last, 3).Value = StrasseNr
'PLZ
Cells(last, 4).Value = PLZ
'Ort
Cells(last, 5).Value = Ort
'Telefon
Cells(last, 6).Value = Telefon
'Emailadresse der Hausverwaltung
Cells(last, 7).Value = Emailadresse
Range("A1:G51").Sort Key1:=Range("A2"), Header:=xlYes
Sheets("Hausverwaltungen").Visible = False
Unload HausverwaltungEingabe
End Sub
'Formular schließen ohne zu speichern

Private Sub ButtonCancel_Click()
Unload Me
End Sub
'Löscht den angezeigten Datensatz

Private Sub ButtonLöschen_Click()
End Sub
'geht weiter zum nächsten Datensatz

Private Sub ButtonNächste_Click()
End Sub
'Geht zurück zum vorherigen Datensatz

Private Sub ButtonVorherige_Click()
End Sub
'Geht zum ersten freien Datensatz

Private Sub ButtonNeu_Click()
End Sub

Anzeige
AW: Eingabemaske von Exel
30.11.2021 20:28:53
Exel
Sorry, das ist für mich recht unübersichtlich. Ich bin nicht der perfekte VBAler.
Ich brauche nur einen Code, der mir in in meiner UserForm die einzelnen Datensätze anzeigt wenn ich auf den weiter (ButtonNächste) oder zurück (ButtonVorherige) Button klicke. Wenn ich den ButtonNeu klicke soll er mir den nächsten freien Platz suchen. Wenn mir ein Datensatz angezeigt wird soll das Programm diesen mit dem ButtonLoschen aus der Tabelle entfernen.
Es sind also 4 Buttons die ich noch belegen muss, und die Anzeige der Datensätze beim Öffnen des UserForms ( gleich z.B. einer Adressdatenbank )
Anzeige
AW: Eingabemaske von Exel
30.11.2021 21:44:29
Exel
beim öffnen meines UserForm zeigt er mir nicht die Datensätze meiner Tabelle! Was mache ich falsch? oder hab ich was vergessen?
'Beim Öffnen soll der erste Datensatz der Tabelle Hausverwaltungen im Formular angezeigt werden

Private Sub HausverwaltungEingabe_Initialize()
Sheets("Hausverwaltungen").Visible = True
Sheets("Hausverwaltungen").Select
NameHausverwaltung = Sheets.Hausverwaltungen(Zeile, 1)
NrHausverwaltung = Sheets.Hausverwaltungen(Zeile, 2)
StrasseNr = Sheets.Hausverwaltungen(Zeile, 3)
PLZ = Sheets.Hausverwaltungen(Zeile, 4)
Ort = Sheets.Hausverwaltungen(Zeile, 5)
Telefon = Sheets.Hausverwaltungen(Zeile, 6)
Emailadresse = Sheets.Hausverwaltungen(Zeile, 7)
End Sub

Anzeige
AW: Eingabemaske von Exel
30.11.2021 21:54:07
Exel
das dürfte nicht gehen

Sheets.Hausverwaltungen(Zeile, 1)
eher so

Worksheets("Hausverwaltungen").cells(Zeile, 1)
Die Variable "Zeile" wird nirgends im initialize gesetzt.
AW: Eingabemaske von Exel
30.11.2021 22:06:12
Exel
ich verstehe dann aber nicht, das die Eingabe eines neuen Datensatzes problemlos geht.
Ich habe die Datei einmal hochgeladen: https://www.herber.de/bbs/user/149497.xlsm
'speichert den neuen Datensatz

Private Sub ButtonEintragen_Click()
'erste freie Zeile ausfindig machen
Dim last As Integer
Sheets("Hausverwaltungen").Visible = True
Sheets("Hausverwaltungen").Select
last = Sheets("Hausverwaltungen").Cells(Rows.Count, 1).End(xlUp).Row + 1
'Name der Hausverwaltung
Cells(last, 1).Value = NameHausverwaltung
'Nr. der Hausverwaltung
Cells(last, 2).Value = NrHausverwaltung
'Strasse und Hausnummer der Hausverwaltung
Cells(last, 3).Value = StrasseNr
'PLZ
Cells(last, 4).Value = PLZ
'Ort
Cells(last, 5).Value = Ort
'Telefon
Cells(last, 6).Value = Telefon
'Emailadresse der Hausverwaltung
Cells(last, 7).Value = Emailadresse
Range("A1:G51").Sort Key1:=Range("A2"), Header:=xlYes
Sheets("Hausverwaltungen").Visible = False
Unload HausverwaltungEingabe
End Sub

Anzeige
AW: Eingabemaske von Exel
30.11.2021 22:11:31
Exel
das initialize muß so heißen.

Private Sub Userform_Initialize()
Dim Zeile As Long
Zeile = 2
With Worksheets("Hausverwaltungen")
NameHausverwaltung = .Cells(Zeile, 1)
NrHausverwaltung = .Cells(Zeile, 2)
StrasseNr = .Cells(Zeile, 3)
PLZ = .Cells(Zeile, 4)
Ort = .Cells(Zeile, 5)
Telefon = .Cells(Zeile, 6)
Emailadresse = .Cells(Zeile, 7)
End With
End Sub

AW: Eingabemaske von Exel
30.11.2021 22:41:23
Exel
sorry Ralf, aber es funktioniert nicht.
Es wird mir beim Öffnen kein Datensatz angezeigt :-(
Ich werde noch wahnsinnig an dem Programm :-)
Edmund
AW: Eingabemaske von Exel
30.11.2021 22:43:37
Exel
sorry Ralf, aber es funktioniert nicht.
Ich werde noch wahnsinnig mit dem Programm :-)
Anzeige
AW: Eingabemaske von Exel
30.11.2021 22:54:00
Exel
schick doch mal deine akktuelle Datei mit meiner initialize.
bei mir geht das prima.
AW: Eingabemaske von Exel
30.11.2021 23:39:46
Exel
damit du dem Wahnsinn dann abschwören kannst. :)
https://www.herber.de/bbs/user/149499.xlsm
Erklärung: Es gibt eine Textbox in welcher die jeweiligen Zeilennummer des Datensatzes geschrieben wird. Die Textbox kannst du in initialize auf visible = false setzen
Eine Änderung des Inhaltes der Textbox löst die Änderung der Datensatzanzeige aus. d.h Button "Nächster" erhöht den Wert in der Textbox. Textbox_Change wird dadurch ausgelöst und füllt die Userform. Die andern Funktionalitäten ergeben sich entsprechend. Der Code ist nicht allzu komplex und sollte von dir verstanden werden.
gruß
rb
Anzeige
AW: Eingabemaske von Exel
01.12.2021 10:24:06
Exel
Mist, bin nun im Büro und die Firma hat den Download aus Foren gesperrt. Ich kann also leider nicht da reinschauen https://www.herber.de/bbs/user/149499.xlsm
AW: Eingabemaske von Exel
30.11.2021 21:54:10
Exel
Hi,
die Variable Zeile hat keinen Wert. Aber zeig doch mal Deine Datei.
VG, Boris
Nachfrage
01.12.2021 09:15:06
{Boris}
Hi,
woher soll die Variable Zeile denn ihren Wert beziehen?
Und wie Ralf schon schrieb:
NameHausverwaltung = Sheets.Hausverwaltungen(Zeile, 1)
muss dann heißen:
NameHausverwaltung = Sheets.Hausverwaltungen.Cells(Zeile, 1)
Aber auch da braucht die Variable Zeile einen Wert.
VG, Boris
Anzeige
AW: Nachfrage
01.12.2021 10:20:53
Edmund
Hallo Boris,
hab nun alles so eingetragen, aber es geht immer noch nicht.
Wahrscheinlich habe ich z.Z. einen kompletten Blackout.
Kannst du mir schreiben wo ich was reinschreiben muss?
'Beim Öffnen soll der erste Datensatz der Tabelle Hausverwaltungen im Formular angezeigt werden

Private Sub HausverwaltungEingabe_Initialize()
Sheets("Hausverwaltungen").Visible = True
Sheets("Hausverwaltungen").Select
Dim Zeile As Long
Zeile = 2
With Worksheets("Hausverwaltungen")
NameHausverwaltung = Sheets.Hausverwaltungen.Cells(Zeile, 1)
NrHausverwaltung = Sheets.Hausverwaltungen.Cells(Zeile, 2)
StrasseNr = Sheets.Hausverwaltungen.Cells(Zeile, 3)
PLZ = Sheets.Hausverwaltungen.Cells(Zeile, 4)
Ort = Sheets.Hausverwaltungen.Cells(Zeile, 5)
Telefon = Sheets.Hausverwaltungen.Cells(Zeile, 6)
Emailadresse = Sheets.Hausverwaltungen.Cells(Zeile, 7)
End With
End Sub

AW: Nachfrage
01.12.2021 11:37:02
{Boris}
Hi,
Du musst das Userform_Initialize-Ereignis nutzen. Zudem hattest Du die Sheets falsch referenziert.
Also: Alten Code raus, diesen Code in das Modul des Userforms:

Private Sub UserForm_Initialize()
Sheets("Hausverwaltungen").Visible = True
Sheets("Hausverwaltungen").Select
Dim Zeile As Long
Zeile = 2
With Worksheets("Hausverwaltungen")
NameHausverwaltung = Sheets("Hausverwaltungen").Cells(Zeile, 1)
NrHausverwaltung = Sheets("Hausverwaltungen").Cells(Zeile, 2)
StrasseNr = Sheets("Hausverwaltungen").Cells(Zeile, 3)
PLZ = Sheets("Hausverwaltungen").Cells(Zeile, 4)
Ort = Sheets("Hausverwaltungen").Cells(Zeile, 5)
Telefon = Sheets("Hausverwaltungen").Cells(Zeile, 6)
Emailadresse = Sheets("Hausverwaltungen").Cells(Zeile, 7)
End With
End Sub
VG, Boris
AW: Nachfrage
01.12.2021 14:16:22
Edmund
Du bist der Beste - es geht !!!
Mir zwar nicht ganz klar warum es heißen muss

Private Sub UserForm_Initialize() 
und dort nicht der Name meiner UserForm stehen kann, aber egal es geht, mir wird der erste Datensatz der Tabelle angezeigt. Wenn du mir jetzt nur noch weiter helfen kannst mit den Buttons Weiter, Zurück und Neu Bei weiter soll er mir nur aus der Tabelle den nächsten Datensatz anzeigen, den ich dann editieren kann Bei zurück gehts dann zurück in der Tabelle Bei dem Button Neu soll er zur ersten freien Zeile der Tabelle springen um dort eine neue Hausverwaltung anlegen zu können. Du hast dir schon jetzt ein riesiges Weihnachtsgeschenk verdient :-) 'geht weiter zum nächsten Datensatz

Private Sub ButtonNächste_Click()
End Sub
'Geht zurück zum vorherigen Datensatz

Private Sub ButtonVorherige_Click()
End Sub
'Geht zum ersten freien Datensatz

Private Sub ButtonNeu_Click()
End Sub

AW: Nachfrage
01.12.2021 15:37:20
{Boris}
Hi Edmund,
für den Moment mal die Beschreibung für Vor- und zurück.
Wichtig: Deklariere ein öffentliche Variable in einem allgemeinen Modul (davon hast Du in Deiner Datei ja schon ne ganze Menge) - dort ganz oben:

Public Zeile As Long
Und die Codes für die beiden genannten Buttons:

'geht weiter zum nächsten Datensatz
Private Sub ButtonNächste_Click()
Zeile = Zeile + 1
Call UserForm_Initialize
End Sub
'Geht zurück zum vorherigen Datensatz
Private Sub ButtonVorherige_Click()
If Zeile > 2 Then
Zeile = Zeile - 1
Call UserForm_Initialize
End If
End Sub
Für den Rest hab ich im Moment nicht die Zeit - gerne später.
VG, Boris
Nachtrag
01.12.2021 15:39:10
{Boris}
Hi,
das Initialize-Event muss auch leicht angepasst werden, da die Variable Zeile ja nun Public ist:

Private Sub UserForm_Initialize()
Sheets("Hausverwaltungen").Visible = True
Sheets("Hausverwaltungen").Select
If Zeile = 0 Then Zeile = 2
With Worksheets("Hausverwaltungen")
NameHausverwaltung = Sheets("Hausverwaltungen").Cells(Zeile, 1)
NrHausverwaltung = Sheets("Hausverwaltungen").Cells(Zeile, 2)
StrasseNr = Sheets("Hausverwaltungen").Cells(Zeile, 3)
PLZ = Sheets("Hausverwaltungen").Cells(Zeile, 4)
Ort = Sheets("Hausverwaltungen").Cells(Zeile, 5)
Telefon = Sheets("Hausverwaltungen").Cells(Zeile, 6)
Emailadresse = Sheets("Hausverwaltungen").Cells(Zeile, 7)
End With
End Sub
VG, Boris
AW: Nachtrag
01.12.2021 18:46:15
Edmund
Perfekt, vor und zurück geht jetzt
Teste jetzt noch mal vor und zurück
Danke
AW: Nachfrage
01.12.2021 18:25:02
Edmund
Hallo Boris,
mach dir meinetwegen keinen Stress, ich kann warten. Ich bin ja froh und dankbar, dass mir einer hilft.
Habe die Sachen von dir eingebaut, leider funktioniert das nicht.
Diese Public Zeile As Long wo soll ich die reinschreiben?
'Geht zurück zum vorherigen Datensatz

Private Sub ButtonVorherige_Click()
If Zeile > 2 Then
Zeile = Zeile - 1
Call UserForm_Initialize
End If
End Sub
'Geht zum ersten freien Datensatz

Private Sub ButtonNeu_Click()
Dim last As Integer
Sheets("Hausverwaltungen").Visible = True
Sheets("Hausverwaltungen").Select
last = Sheets("Hausverwaltungen").Cells(Rows.Count, 1).End(xlUp).Row + 1
ActiveWindow.SelectedSheets.Visible = False
End Sub

AW: Nachfrage
01.12.2021 18:33:39
{Boris}
Hi,
zur Public-Variable hatte ich geschrieben:

Wichtig: Deklariere ein öffentliche Variable in einem allgemeinen Modul (davon hast Du in Deiner Datei ja schon ne ganze Menge) - dort ganz oben:
Public Zeile As Long
Lad mal Deine Mappe mit dem nicht funktionierenden Code hoch.
VG, Boris
AW: Nachfrage
01.12.2021 20:05:23
Edmund
Hallo Boris, hab die Datei hochgeladen: https://www.herber.de/bbs/user/149519.xlsm
Wenn ich das UserForm " HausverwaltungEingabe" öffne - Anzeige geht , erster Datensatz der Tabelle wird angezeigt!
Im Formular Vor und Zurück geht !
Schließen des Formulars geht!
Nun das was noch nicht so richtig geht:
Wenn man auf den Button Neue HV klickt, soll zum ersten freien Datensatz gesprungen werden damit ich die neue Hausverwaltung eingeben kann.
Danach soll, wenn der Button "Eintragen" gedrückt wird, der Datensatz gespeichert werden.
Wenn ich auf einen vorhandenen Datensatz bin und den editiere ( z.B. neue Telefonnummer eintrage) soll, wenn ich auf Eintragen klicke, der geänderte Datensatz gespeichert werden. Wenn ich z.Z. einen Datensatz ändere und auf Eintragen gehe, speichert er mir diesen immer als neuen Datensatz am Ende der Tabelle ab.
Löschen des Datensatzes auf dem ich gerade bin geht leider auch noch nicht
Muss die Tabelle "Hausverwaltungen" immer ungeschützt sein?, mir währe lieber sie ist geschützt und wird nur zum Eintragen ungeschützt.
Und zum Schluss, lass dir Zeit, ich bin froh, dass du mir hilfst.
lg
Edmund
Zum Schluss noch eine Frage: Wenn ich die Button drücke, zuckt mein Bildschirm immer etwas, ist das normal?
Public Zeile As Long
'Beim Öffnen soll der erste Datensatz der Tabelle Hausverwaltungen im Formular angezeigt werden - fertig

Private Sub UserForm_Initialize()
Sheets("Hausverwaltungen").Visible = True
Sheets("Hausverwaltungen").Select
If Zeile = 0 Then Zeile = 2
With Worksheets("Hausverwaltungen")
NameHausverwaltung = Sheets("Hausverwaltungen").Cells(Zeile, 1)
NrHausverwaltung = Sheets("Hausverwaltungen").Cells(Zeile, 2)
StrasseNr = Sheets("Hausverwaltungen").Cells(Zeile, 3)
PLZ = Sheets("Hausverwaltungen").Cells(Zeile, 4)
Ort = Sheets("Hausverwaltungen").Cells(Zeile, 5)
Telefon = Sheets("Hausverwaltungen").Cells(Zeile, 6)
Emailadresse = Sheets("Hausverwaltungen").Cells(Zeile, 7)
End With
ActiveWindow.SelectedSheets.Visible = False
End Sub
'speichert den neuen Datensatz - fertig

Private Sub ButtonEintragen_Click()
'erste freie Zeile ausfindig machen
Dim last As Integer
Sheets("Hausverwaltungen").Visible = True
Sheets("Hausverwaltungen").Select
last = Sheets("Hausverwaltungen").Cells(Rows.Count, 1).End(xlUp).Row + 1
'Name der Hausverwaltung
Cells(last, 1).Value = NameHausverwaltung
'Nr. der Hausverwaltung
Cells(last, 2).Value = NrHausverwaltung
'Strasse und Hausnummer der Hausverwaltung
Cells(last, 3).Value = StrasseNr
'PLZ
Cells(last, 4).Value = PLZ
'Ort
Cells(last, 5).Value = Ort
'Telefon
Cells(last, 6).Value = Telefon
'Emailadresse der Hausverwaltung
Cells(last, 7).Value = Emailadresse
Range("A1:G51").Sort Key1:=Range("A2"), Header:=xlYes
Sheets("Hausverwaltungen").Visible = False
Unload HausverwaltungEingabe
End Sub
'Formular schließen ohne zu speichern - fertig

Private Sub ButtonCancel_Click()
Unload Me
End Sub
'Löscht den angezeigten Datensatz - geht noch nicht

Private Sub ButtonLöschen_Click()
Sheets("Hausverwaltungen").Visible = True
Range("A4:G4").Select
Selection.Delete
Sheets("Hausverwaltungen").Select
ActiveWindow.SelectedSheets.Visible = False
End Sub
'geht weiter zum nächsten Datensatz - fertig

Private Sub ButtonNächste_Click()
Zeile = Zeile + 1
Call UserForm_Initialize
End Sub
'Geht zurück zum vorherigen Datensatz - fertig

Private Sub ButtonVorherige_Click()
If Zeile > 2 Then
Zeile = Zeile - 1
Call UserForm_Initialize
End If
End Sub
'Geht zum ersten freien Datensatz - geht noch nicht

Private Sub ButtonNeu_Click()
Dim last As Integer
Sheets("Hausverwaltungen").Visible = True
Sheets("Hausverwaltungen").Select
last = Sheets("Hausverwaltungen").Cells(Rows.Count, 1).End(xlUp).Row + 1
ActiveWindow.SelectedSheets.Visible = False
End Sub
'Fehlermeldung, wenn versucht wird, die UserForm über das
'Schließenkreuz oben rechts zu schließen - fertig

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
MsgBox "Bitte verlassen Sie die Eingabemaske" & vbLf & "nur mit der Schaltfläche - Schließen.", _
vbOKOnly + vbInformation, "Bitte betätigen."
Cancel = 1
End If
End Sub

AW: Nachfrage
01.12.2021 20:42:42
ralf_b
Hallo Edmund,
du pflegst diesen Thread schon den ganzen Nachmittag und immer noch läuft nicht alles. Seit ca 10:00 Uhr hast du meinen Vorschlag. Bei dem alles funktioniert.
Was stimmt denn mit dir nicht?
gruß
rb
AW: Nachfrage
01.12.2021 22:20:06
Edmund
Hallo Ralf,
ich hatte dir geschrieben, dass ich im Büro keine Möglichkeit zum Download von Dateien habe, somit habe ich es anders versucht um nicht den ganzen Tag untätig rumzusitzen, sorry.
Aber nun zu deiner Datei.
Ich habe den Code eingepflegt und bekomme leider laufend die Fehlermeldung 1004 beim Anlegen eines neuen Datensatzes oder wenn ich einen Datensatz editiere und dann auf Eintragen drücke, dann springt er beim Debuggen in
Sub werteInTab(last As Long) zum Punkt .Range("A1:G51").Sort Key1:=Range("A2"), Header:=xlYes Der Datensatz ist aber in der Tabelle drin.
Dann ist mir aufgefallen, dass beim Löschen eines Datensatzes das Programm diesen aber immer noch anzeigt. Beim Testen hatte ich mir so die kompl. Datenbank gelöscht :-). Kann das Programm nach dem Loschen und neu Sortieren zum nächsten Datensatz springen. Dann kann man wenigsten sehen, dass der Datensatz nicht mehr vorhanden ist.
Hab dir die neue Programmdatei hochgeladen. https://www.herber.de/bbs/user/149520.xlsm
Und nochmals sorry, für die Missverständnisse, war nicht mit böser Absicht
lg
Edmund
AW: Nachfrage
01.12.2021 22:26:02
Edmund
Das mit dem nicht Anzeigen eines anderen Datensatzes nach dem Löschen passiert nur wenn ich den ersten Datensatz lösche!
AW: Nachfrage
02.12.2021 00:12:22
ralf_b
Hallo Edmund,
da fehlte noch ein Punkt vor Range("A2")
.Range("A1:G51").Sort Key1:=.Range("A2"), Header:=xlYes
Das löschen im letzten Datensatz (Zeile 2) wollte ich begrenzen, weil dann nur noch die Tabellenüberschrift übrig wäre. Die wäre auch löschbar. Das habe ich jetzt abgefangen.
https://www.herber.de/bbs/user/149521.zip max Dateigröße erreicht!
AW: Nachfrage
02.12.2021 10:50:24
Edmund
Hallo Ralf,
habe mir das Programm heute morgen zu Hause noch schnell runtergeladen und dann jetzt hier im Büro eingepflegt, es läuft SUPER !!!
Ohne Probleme und ganz so wie ich es mir vorgestellt hatte, Vielen Dank für deine Geduld und deine Hilfe. Ich habe in den Zwei Tagen dank dir und Boris eine ganze Menge gelernt.
lg Edmund
AW: Nachfrage
02.12.2021 11:31:53
Edmund
ja toll, jetzt kommen von meinen Kollegen die Sonderwünsche, wobei sie nicht ganz unrecht haben :-)
Da die Daten der Hausverwaltungen nicht aus einer externen Tabelle kommen, sondern im Programm gespeichert werden, müssen sie bei einem Programm Update alle neu eingegeben werden, denke das ist so richtig.
Wenn ich nun überall da wo Worksheets("Hausverwaltungen") steht, den Eintrag in Workbook("Daten").Worksheets("Hausverwaltungen")abändere, würde das gehen?
Oder ist es vielleicht einfacher vorher unter Sub ...... Die externe Tabelle wo die Daten stehen anzugeben?
Die externe Tabelle heißt "Daten" und das Tabellenblatt "Hausverwaltungen" und befindet sich im gleichen Verzeichnis wie das Programm
Sorry, war froh dass alles läuft und dann kommen die Überlegungen.
mfg
Edmund
update?!
02.12.2021 18:17:19
ralf_b
zum Thema Programmupdate weis ich nicht viel. Nur das es auch hier verschiedene Lösungswege gibt.
Was soll upgedatet werden?
Da die Hausverwaltungen schon in eine separaten Blatt stehen, können die unberührt von andern Änderungen wie z.b. Programmcode bleiben.
Diese Daten auszulagern macht nur Arbeit und Pflegeaufwand. Es sein denn diese Daten holst du sowieso ständig von außen.
Die Workbooks()-Auflistung beinhaltet nur die geöffneten Dateien. Somit wäre so eine Datei erstmal zu öffnen.
AW: update?!
02.12.2021 20:26:51
Edmund
Hallo Ralf,
habe schon eine andere Lösung in Arbeit.
Wenn das Programm wirklich geändert werden soll, und mein Kollege aus Berlin bekommt das neue Programm, kann er dann mit einem Click die Daten aus der Tabelle "Hausverwaltungen" in eine Externe Datei schreiben und mit dem neuen Programm kann er dann die Daten aus der Datei "Daten" wieder in sein neues Programm laden ( in der Tabelle Hausverwaltungen ). Soweit die Theorie.
Getestet habe ich das Importieren/Exportieren der Daten. Was mir aber nicht in den Sinn will, per Makro geht es problemlos, wenn ich den Code des Makros aber auf einen CommandButton packe knallt es. Laufzeitfehler 1004 Anwendungs- oder Objektdefinierter Fehler. Springt aber nicht in eine Zeile wo ich erkennen kann wo der Fehler liegt.
Wahrscheinlich erkennst du wieder sofort woran es liegt.
lg Edmund
'Hausverwalterdaten werden aus der Datei "Daten.xlsm" in das Tabellenblatt "Hausverwaltungen" geschrieben

Private Sub ButtonImportieren_Click()
Sheets("Vorbelegung").Select
Sheets("Hausverwaltungen").Visible = True
Sheets("Vorbelegung").Select
ActiveWindow.SelectedSheets.Visible = False
ChDir "C:\ImmoGrandeTool"
Workbooks.Open Filename:="C:\ImmoGrandeTool\Daten.xlsm"
Rows("2:51").Select
Selection.Copy
Windows("ImmoGrandeTool.xlsm").Activate
Rows("2:51").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows("Daten.xlsm").Activate
ActiveWorkbook.Close
Sheets("Hausverwaltungen").Select
Sheets("Vorbelegung").Visible = True
Sheets("Hausverwaltungen").Select
ActiveWindow.SelectedSheets.Visible = False
End Sub

Private Sub ButtonExportieren_Click()
'Hausverwalterdaten werden aus dem Programm in die Datei "Daten.xlsm" und dem Tabellenblatt "Hausverwaltungen" geschrieben
Sheets("Vorbelegung").Select
Sheets("Hausverwaltungen").Visible = True
Sheets("Vorbelegung").Select
ActiveWindow.SelectedSheets.Visible = False
Range("A2").Select
ChDir "C:\ImmoGrandeTool"
Workbooks.Open Filename:="C:\ImmoGrandeTool\Daten.xlsm"
Windows("ImmoGrandeTool.xlsm").Activate
Rows("2:51").Select
Selection.Copy
Windows("Daten.xlsm").Activate
Rows("2:51").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWorkbook.Save
ActiveWorkbook.Close
Sheets("Hausverwaltungen").Select
Sheets("Vorbelegung").Visible = True
Sheets("Hausverwaltungen").Select
ActiveWindow.SelectedSheets.Visible = False
End Sub

und was soll das ständige SELECT?
02.12.2021 21:37:33
Matze
Hallo ...
Dieses ständige SELECT sollte nicht notwendig sein ...

Sheets("Vorbelegung").Select
Sheets("Hausverwaltungen").Visible = True
Sheets("Vorbelegung").Select
ich kann das nicht nachvollziehen!
Gruß ...
AW: update?!
02.12.2021 22:38:22
ralf_b
Testen mußt du das selber. Voraussetzungen: Dateien im gleichen Ordner, Sheet muß vorhanden sein,

Private Sub ButtonExportieren_Click()
'Hausverwalterdaten werden aus dem Programm in die Datei "Daten.xlsm" und dem Tabellenblatt "Hausverwaltungen" geschrieben
Dim pfad As String
Dim wb As Workbook
pfad = ThisWorkbook.Path & "\"
Set wb = Workbooks.Open(Filename:=pfad & "Daten.xlsm")
wb.Worksheets("Hausverwaltungen").Cells.clearcontents 'vorhandene Daten im Ziel  löschen
Worksheets("Hausverwaltungen").UsedRange.Copy Destination:=wb.Worksheets("Hausverwaltungen").Cells(1, 1)
wb.Close savechanges:=False
Set wb = Nothing
End Sub

AW: update?!
02.12.2021 23:25:59
Edmund
Hallo Ralf,
es kommt keine Fehlermeldung, aber es werden auch keine Daten exportiert.
AW: update?!
03.12.2021 01:19:49
ralf_b
wb.Close savechanges:=true
Kritik zu ignorieren ist die schlechtere Variante
03.12.2021 16:37:56
Matze
.
AW: Nachfrage
01.12.2021 22:46:19
Edmund
Hallo Boris,
ich habe mir die Lösung von Ralf angeschaut, sie läuft bis auf das Sortieren ohne Fehler, Danke für deine Hilfe. Hab einige Sachen dazu gelernt.
Wenn das Sortieren nach dem Editieren oder dem Hinzufügen eines neuen Datensatzes noch klappt, ist das eigentlich das was ich erreichen wollte.
lg Edmund
AW: Nachfrage
01.12.2021 15:15:37
Edmund
Das Löschen habe ich mal versucht über den Makro Recorder zu machen, leider mit keinem guten Ergebnis
Mit Range nimmt er mir ( natürlich ) nicht den gerade angezeigten Datensatz, hat aber auch ein Problem mit dem Selection.Delete
'Löscht den angezeigten Datensatz

Private Sub ButtonLöschen_Click()
Sheets("Hausverwaltungen").Visible = True
Range("A4:G4").Select
Selection.Delete Shift:=xlUp
Sheets("Hausverwaltungen").Select
ActiveWindow.SelectedSheets.Visible = False
End Sub

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige