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

Labels in Userform werden nicht immer ak

Labels in Userform werden nicht immer ak
22.07.2021 17:25:01
Markus
Hallo,
folgendes Szenario:
Ich lege hiermit eine neue Excelzeile an:

Sub neueexcelzeile()
Tabelle1.ListObjects(1).ListRows.Add
Range("A" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row).Select
formcodesbearbeitenanzeigen
End Sub
Dann öffnet sich eine Userform in der ich für die neue Excelzeile Daten eingeben kann.
Die Neu eingegeben Daten der Userform werden so in die Excel-Table geschrieben:

Sub forminexceltabelleschreiben()
Worksheets("MarlemsBarrierefreieCodes").Range("A2:F" & ActiveCell.Row).Font.Size = 12
Worksheets("MarlemsBarrierefreieCodes").Range("A2:F" & ActiveCell.Row).Font.Name = "Arial"
Worksheets("MarlemsBarrierefreieCodes").Range("A2:F" & ActiveCell.Row).RowHeight = 40
Worksheets("MarlemsBarrierefreieCodes").Range("A" & ActiveCell.Row).Value = cbxProgrammiersprache.Text
Worksheets("MarlemsBarrierefreieCodes").Range("B" & ActiveCell.Row).Value = cbxKategorie.Text
Worksheets("MarlemsBarrierefreieCodes").Range("C" & ActiveCell.Row).Value = cbxTitel.Text
Worksheets("MarlemsBarrierefreieCodes").Range("D" & ActiveCell.Row).Value = edtCode.Text
Worksheets("MarlemsBarrierefreieCodes").Range("E" & ActiveCell.Row).Value = edtWebadresse.Text
Worksheets("MarlemsBarrierefreieCodes").Range("F" & ActiveCell.Row).Value = edtYoutube.Text
End Sub
wenn ich jetzt eine Userform aufrufe in dem die Exceldaten in Labels angezeigt werden sollen:

Sub Userformcodebefuellen()
Application.ScreenUpdating = False
DoEvents
LblProgrammiersprache.Caption = Worksheets("MarlemsBarrierefreieCodes").Range("A" & ActiveCell.Row).Value
LblKategorie.Caption = Worksheets("MarlemsBarrierefreieCodes").Range("B" & ActiveCell.Row).Value
LblTitel.Caption = Worksheets("MarlemsBarrierefreieCodes").Range("C" & ActiveCell.Row).Value
edtCodeVorschau.Text = Worksheets("MarlemsBarrierefreieCodes").Range("D" & ActiveCell.Row).Value
Application.ScreenUpdating = True
End Sub
Dann stehen in den Labels die Daten von der vorherigen Excelzeile drin und nicht die daten von der aktuell markierten Excelzeile.
Warum?

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Labels in Userform werden nicht immer ak
22.07.2021 18:02:42
ralf_b
hol dir die neue Zeile in eine Objektvariable und nutze diese. Dann benötigst du die ganzen Activecell-Verweise nicht mehr.

z.b. Sub neueexcelzeile()
im objLstRow as Listrow
set objLstRow =  Tabelle1.ListObjects(1).ListRows.Add ( AlwaysInsert:= True)
call formcodesbearbeitenanzeigen ( objLstRow)    'so könnte man das Objekt an eine andere Sub übergeben wenn diese dafür vorbereitet ist.
call forminexceltabelleschreiben( obLstRow ) 'z.b. so
End Sub
Sub forminexceltabelleschreiben( OLstRw as Listrow)
with OLstRw
.cells.Font.Size = 12
.cells.Font.Name = "Arial"
.cells.RowHeight = 40
.cells(1).Value = cbxProgrammiersprache.Text
.cells(2).Value = cbxKategorie.Text
.cells(3).Value  = cbxTitel.Text
.cells(4).Value = edtCode.Text
.cells(5).Value  = edtWebadresse.Text
.cells(6).Value  = edtYoutube.Text
end with
End Sub

Anzeige
AW: Labels in Userform werden nicht immer ak
22.07.2021 19:26:50
Markus
Danke für Deine Schnelle Antwort
Ich habe noch folgendes Verständnisproblem:
zunächst werden die Daten die Userform geladen.
In der Userforn kann der Anwender die Daten ändern.
Somit muss ich doch eine neue Listrow erstellen oder nicht?
AW: Labels in Userform werden nicht immer ak
22.07.2021 19:42:48
ralf_b
nein, denn wenn die Daten aus einer existierenden Zeile stammen und wieder dort rein sollen, muß keine Listrow "neu" erstellt werden. Man kann aber auch dem Listrowobjekt eine existierende Zeile zuweisen und damit dann weiter arbeiten. Wenn du beim Einlesen dir die Zeilennummer merkst ,dann benötigst du auch keine anschließende Suche um die richtige Zeile zum Zurückschreiben zu finden. Es gibt viele Wege, die hier zum Ziel führen.
Solltest du aber in einer intelligenten Tabelle(listobjects) Daten bearbeiten, macht es schon Sinn auch deren Objekte (Listrow, Listcolumn usw.) zu nutzen.
https://www.thespreadsheetguru.com/blog/2014/6/20/the-vba-guide-to-listobject-excel-tables
Anzeige
AW: Labels in Userform werden nicht immer ak
22.07.2021 20:07:19
Markus
Hallo,
Danke für Deine Erklärung.
Ich arbeite mit einer intelligenten Tabelle.
Danke für den Link. Ich schaue es mir an.
AW: Labels in Userform werden nicht immer ak
22.07.2021 21:36:48
Markus
Hallo,
diese Zeile
Range("A" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row).Select
Wollte ich ersetzen.
Hier mein Versuch:
ActiveSheet.ListObjects("MarlemsBarrierefreieCodes").ListRows(ActiveSheet.ListObjects("MarlemsBarrierefreieCodes").ListRows.Count).Select
Fehlermeldung:

Index außerhalb des gültigen Bereichs.
Wie muss ich es schreiben, damit es keine Fehlermeldung gibt?
Anzeige
AW: Labels in Userform werden nicht immer ak
23.07.2021 06:46:02
ralf_b
das select wird nicht benötigt. Somit ist die Zeile überflüssig.
Erklärung: Select markiert einen Bereich. Das ist hauptsächlich etwas für die Optik. Ein Programm hat keine Augen.
Benutze Bereichsangaben wir Cells() oder Range(). Da du eine intelligente Tabelle nutzt, kannst du deren Objekte benutzen.
Wenn du eine Objektvariable erzeugt hast benötigst du nicht mehr den Activesheet/ Worksheets() präfix im Code.
Eine Referenz auf deine Intelligente Tabelle erhälst du so. Beachte aber die Gültigkeit solcher Variablen.
Dim objListObject as ListObject 'Objektvariable erzeugen
'im Arbeitsblatt gibt es die Auflistung der Listobjects (Intelligente Tabellen) . Hast du nur eine Tabelle im Blatt, dann reicht die (1) als Identifizierer.
set objListObject = Worksheets("MarlemsBarrierefreieCodes").ListObjects(1) 'Objektvariable mit der Tabelle verknüpfen.
Anzeige
AW: Labels in Userform werden nicht immer ak
23.07.2021 07:21:01
Markus
Hallo,
Danke für Deine Erklärung.
Mein Versuch:
Sub neueexcelzeile()
Dim objListObject As ListObject
Tabelle1.ListObjects(1).ListRows.Add
' Range("A" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row).Select
Set objListObject = Worksheets("MarlemsBarrierefreieCodes").ListObjects(1)
objListObject.Range ("A" & ActiveCell.Row())
Range wird mir von der Codevervollständigung angeboten, wenn ich es benutze, bekomme ich die Fehlermeldung:
Unzulässige Verwendung einer Eigenschaft.
Was mache ich falsch?
AW: Labels in Userform werden nicht immer ak
23.07.2021 08:46:14
Markus
Hallo,
Danke für Deine Erklärung.
Mein Versuch:
Sub neueexcelzeile()
Dim objListObject As ListObject
Tabelle1.ListObjects(1).ListRows.Add
' Range("A" & ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row).Select
Set objListObject = Worksheets("MarlemsBarrierefreieCodes").ListObjects(1)
objListObject.Range ("A" & ActiveCell.Row())
Range wird mir von der Codevervollständigung angeboten, wenn ich es benutze, bekomme ich die Fehlermeldung:
Unzulässige Verwendung einer Eigenschaft.
Was mache ich falsch?
Anzeige
AW: Labels in Userform werden nicht immer ak
23.07.2021 14:37:55
ralf_b
Dir fehlt ein grundlegendes Verständnis wie die Dinge funktionieren.
Ich halte es deshalb für falsch dir einzelne Codezeilen zurecht zu basteln. Zeige uns deine Datei. Im Gesamtbild wird es einfacher die Dinge zu entwirren. Aber bitte keine persönlichen Echtdaten darin. Da jetzt Wochenende ist, habe ich evtl. etwas Muße mit das genauer anzusehen.
AW: Labels in Userform werden nicht immer ak
23.07.2021 17:12:33
Markus
Hallo,
ich habe gerade was ganz anders versucht es klappt:

Sub Formcodebefuellen()
Application.ScreenUpdating = False
ActiveWorkbook.Save
FormCodeVorschau.LblProgrammiersprache.Caption = "Programmiersprache: " & Worksheets("MarlemsBarrierefreieCodes").Range("A" & ActiveCell.Row).Value
FormCodeVorschau.LblKategorie.Caption = Worksheets("MarlemsBarrierefreieCodes").Range("B" & ActiveCell.Row).Value
FormCodeVorschau.LblTitel.Caption = Worksheets("MarlemsBarrierefreieCodes").Range("C" & ActiveCell.Row).Value
FormCodeVorschau.edtCodeVorschau.Text = Worksheets("MarlemsBarrierefreieCodes").Range("D" & ActiveCell.Row).Value
Application.ScreenUpdating = True
End Sub
Bevor ich das Formular Anzeige speichere ich das aktive Workbook.
Ist aber keine perfekte Lösung, weil schließlich soll der Anwender entscheiden wann er die Excel-Arbeitsmappe speichert.
Aber um es auf den Punkt zu bringen:
Das Problem ist, dass wenn ein neuer Datensatz angelegt wurde, der Inhalt der Userform in die Exceldatei geschrieben werden,
die Daten irgendwie nicht richtig in der Exceldatei drin stehen.
Anzeige
AW: Labels in Userform werden nicht immer ak
24.07.2021 12:00:21
ralf_b
das was du da zeigst ist das Gegenteil von Datensatz in Datei schreiben.
Und Workbook.save speichert keine Userformcontrols-Inhalte sondern nur das was im Blatt steht.
Um es auf den Punkt zu bringen. Ich bleibe bei meinen vorherigen Aussagen. Zeige die Datei mit der Userform und erkläre genau! was "irgendwie" nicht geht. Meine Definition von "irgendwie" ist bestimmt eine Andere als Deine.
gruß
rb

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige