online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Den vom 12.02.2019, 12:52 Options

Excel VBA - Zeilen auf Daten überprüfen

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 schreiben

Antwort 1 von Beverly vom 12.02.2019, 14:16 Options

Hi Den,

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 vom 12.02.2019, 14:44 Options

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:

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
[b]frmDE[/b].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 vom 12.02.2019, 19:29 Options

Hi Den,

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 vom 13.02.2019, 07:50 Options

Juhu! genau danach hab ich gesucht!
Dankesehr! Kriegst nen ganz dicken virtuellen Valentinstagsstrauß von mir ;)

with regards, Den

Antwort 5 von Beverly vom 13.02.2019, 08:06 Options

Hi Den,

danke für die Blumen. Es ist ein wunderschöner Strauß und er steht direkt neben meinem Bildschirm ;-)

Bis später,
Karin

Ähnliche Themen

Probleme mit Excel2003 VBA Daten in Excel2007
hagajaka  24.04.2007 - 127 Hits -

Excel hat 65.536 Zeilen
Rolando  27.11.2007 - 173 Hits - 2 Antworten

VBA Excel in unterste Zelle springen
Winniki  12.05.2008 - 75 Hits - 1 Antwort

VBA-Excel
mentosbasi  28.05.2008 - 350 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026