Supportnet / Forum / Tabellenkalkulation
Excel VBA - Zeilen auf Daten überprüfen
Frage
Hallo zusammen!!
Bei meinem Problem geht es um folgendes:
In meiner Excel-Tabelle sind Daten aus einer XML-Konfigurationsdatei in den Zeilen und Spalten gegliedert aufgelistet. In der Spalte Range("A" & x).value sind die jeweiligen Beschreibungen der "Datensätze" bzw. der zugehörigen Werte in den Spalten. In einer UserForm habe ich die Daten übersichtlicher in Textfeldern zum Bearbeiten angeordnet. In einer ListBox kann man hierbei den "Datensatz", den ich anhand des Wertes in Ax identifiziere, auswählen. Da es durchaus passieren kann, dass einmal eine komplette Zeile keine Werte besitzt, die folgende Zeile allerdings doch, möchte ich dies vor dem Füllen der ListBox abfangen.
Jetzt die Frage: Ist es möglich, leere Zeilen auszufiltern bzw. überhaupt ausfindig zu machen?
Mit einer Schleife, die z.B. Zeile 44 von links nach rechts durchsucht, kann man dies zwar bewerkstelligen, erscheint mir allerdings nicht als allzu schlau.
Vielen Dank im Voraus!
regards, Den
Antwort 1 von Beverly
Hi Den,
Füllen einer ListBox ohne Leerzeilen
Geprüft und eingelesen werden die Spalten A:C von Zeile 1 bis Zeile 7
Bis später,
Karin
Füllen einer ListBox ohne Leerzeilen
Sub listbox_ohne_leere()
Dim wsTabelle As Worksheet
Dim loLetzte As Long, loZeile As Long
Set wsTabelle = Worksheets("Tabelle2")
loLetzte = 7
With UserForm1.ListBox1
For loZeile = 1 To loLetzte
' Übergabe des Wertes, wenn er verschieden vom vorhergehenden und ungleich leer ist
If CStr(wsTabelle.Cells(loZeile, 1)) <> "" And CStr(wsTabelle.Cells(loZeile, 3)) <> "" And CStr(wsTabelle.Cells(loZeile, 3)) <> "" Then
.AddItem wsTabelle.Cells(loZeile, 1)
.List(.ListCount - 1, 1) = wsTabelle.Cells(loZeile, 2)
.List(.ListCount - 1, 2) = wsTabelle.Cells(loZeile, 3)
End If
Next loZeile
End With
End Sub
Geprüft und eingelesen werden die Spalten A:C von Zeile 1 bis Zeile 7
Bis später,
Karin
Antwort 2 von Den
Hello again!
Danke für die Hilfe erst mal :)
Hab gleich noch eine Frage zu meinem Projekt:
Ich hab mehrere Tabellenblätter namens "Digitale Eingänge" (DE), "Digitale Ausgänge" (DA), "Analoge Eingänge" (AE) usw.. für jedes davon habe ich eine Übersichts-UserForm namens frmDE, frmDA, frmAE, frmAA erstellt.
In jeder dieser UserForm gibt es eine Funktion, die ja die Listbox mit Daten füllt.
Das wäre ja dann (ganz vereinfacht) die da:
Habe ich die Möglichkeit, diese Funktion in ein Modul auszulagern, auf das ich dann von der jeweiligen UserForm aus zugreifen kann?
Prinzipiell müsste ich ja dann das
Danke für die Hilfe erst mal :)
Hab gleich noch eine Frage zu meinem Projekt:
Ich hab mehrere Tabellenblätter namens "Digitale Eingänge" (DE), "Digitale Ausgänge" (DA), "Analoge Eingänge" (AE) usw.. für jedes davon habe ich eine Übersichts-UserForm namens frmDE, frmDA, frmAE, frmAA erstellt.
In jeder dieser UserForm gibt es eine Funktion, die ja die Listbox mit Daten füllt.
Das wäre ja dann (ganz vereinfacht) die da:
Sub Liste_fuellen()
For n = 1 To 100
ListBox1.AddItem ActiveSheet.Range("A" & n)
Next n
End Sub
Habe ich die Möglichkeit, diese Funktion in ein Modul auszulagern, auf das ich dann von der jeweiligen UserForm aus zugreifen kann?
Prinzipiell müsste ich ja dann das
frmDE.Listbox1..... vorstellen. Kann man diesen Wert in irgend einer Art und Weise an die Funktion übergeben, dass diese dann je nach UserForm arbeitet?Antwort 3 von Beverly
Hi Den,
so richtig weiß ich zwar nicht, was du machen willst, aber versuche es mal mit diesem Code (in einem allgemeinen Modul)
Die Variable inUserForm musst du mit aus der UserForm selbst übergeben (oder auch wo anders her - ich kenne nicht den gesamten Prozess).
Bis später,
Karin
so richtig weiß ich zwar nicht, was du machen willst, aber versuche es mal mit diesem Code (in einem allgemeinen Modul)
Option Explicit
Public inUserForm As Integer
Public frmUserForm As UserForm
Sub ausgelagert()
Dim n As Integer
Select Case inUserForm
Case 1
Set frmUserForm = UF1
Case 2
Set frmUserForm = UF2
End Select
With frmUserForm
For n = 1 To 100
.ListBox1.AddItem ActiveSheet.Range("A" & n)
Next n
End With
End Sub
Die Variable inUserForm musst du mit aus der UserForm selbst übergeben (oder auch wo anders her - ich kenne nicht den gesamten Prozess).
Bis später,
Karin
Antwort 4 von Den
Juhu! genau danach hab ich gesucht!
Dankesehr! Kriegst nen ganz dicken virtuellen Valentinstagsstrauß von mir ;)
with regards, Den
Dankesehr! Kriegst nen ganz dicken virtuellen Valentinstagsstrauß von mir ;)
with regards, Den
Antwort 5 von Beverly
Hi Den,
danke für die Blumen. Es ist ein wunderschöner Strauß und er steht direkt neben meinem Bildschirm ;-)
Bis später,
Karin
danke für die Blumen. Es ist ein wunderschöner Strauß und er steht direkt neben meinem Bildschirm ;-)
Bis später,
Karin

