Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

von Tab in Userforn senden
#1
Hallo zusammen,

ich versuche, nach dem klicken auf den Button, sollen die Werte aus der Excel Tabelle2 Spalte A von Zelle 1 bis zur ersten leeren Zelle , die Daten in das Label - Feld untereinander geschrieben werden und beim wiederholten drücken des Button das die Werte nicht mehrfach ausgegeben werden.
Ist schon die erste Zelle in der angesprochenen Spalte leer, soll im Label-Feld ein Hinweis erscheinen wie „Keine einzulesenden Werte vorhanden!“. Evtl. zuvor eingelesene Werte sollen in dem Fall nicht mehr angezeigt werden.

Danke und Gruß
Jürgen
.xlsm   TabUserform.xlsm (Größe: 14,12 KB / Downloads: 4)
Antworten Top
#2
Hallo Jürgen,
dein Anliegen ist mehr als unklar! Beschreibe doch einmal genauer, was du genau erreichen willst, denn auch aus deiner begefügten Datei geht nichts hervor, aus dem man schlau werden und helfen könnte.

Vervollständige deine Datei mit den Wunschergebnissen und dann kann man weitersehen.
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Antworten Top
#3
Hallo Claudius,

wenn du in Tabelle2 "Werte zum Einlesen" öffnest, kannst du den CommandButton1 "Formular öffnen" die UserForm öffnen.
Soweit ok.

Wenn ich in der Userform1 auf den Button Einlesen Klicke, sollen die Werte aus der Spalte A, in die Userform Feld "Image1" eingetragen werden.
Alle Werte bis zur ersten erkannten Leer Zelle.
Die Werte aus Spalte A sollen untereinander angezeigt werden, so wie in der Spalte A auch.
Sollte in der Zelle A nichts stehen sollen die bereits stehende Werte in der Userforn Feld gelöscht werden und es soll im Feld stehen das es keine werte gibt.
Des weiteren sollte wenn werte vorhanden sind und man mehr als 1 mal auf den Butten drückt, keine mehrfach Eintragungen geben.


Angehängte Dateien
.xlsm   TabUserform2.xlsm (Größe: 20,87 KB / Downloads: 2)
Antworten Top
#4
Hallo

ein Weg, wenn du anstatt des Image ein Label in die Userform einbaust

Code:
Private Sub CommandButton1_Click()
    Dim lngLetzte As Long, i As Long
    Label1.Caption = ""
    With Worksheets("Werte zum Einlesen")
        lngLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
        For i = 1 To lngLetzte
            If .Cells(1, 1).Value <> "" Then
                Label1.Caption = Label1.Caption & .Cells(i, 1).Value & vbCrLf
            Else
                Label1.Caption = "keine Daten"
                Exit Sub
            End If
        Next
    End With
   
End Sub

mfg Tom
Antworten Top
#5
Perfekt, Danke
Antworten Top
#6
Hallo und moin von mir,

Daten aus einer Tabellenspalte nocheinmal auf einer UserForm darzustellen macht aus meiner Sicht nur Sinn, wenn es dir ums lernen geht.

In der Beispielaufgabe stehen mehrere Lernthemen:
1. Texte im Label Steuerelement anzeigen:
Um einen String in einem Label anzuzeigen nutzt du die .Caption Eigenschaft:
Code:
Label1.Caption = "Mein Text"
2. Darstellen eines Eindimensionalen Arrays als String mit einem Trenner:
Du kannst eine Liste an Daten in ein eindimensionales Array schreiben, und alle enthaltenen Elemente in einem Rutsch mit einem von dir gewünschten Trennzeichen in einen String umwandeln (den du dann der .Caption-Eigenschaft zuweisen kannst). Hierfür gibt es das Schlüsselwort Join(array,delimiter). Ein Zeilenumbruch ist in VBA eine Kombination aus Zeilenvorschub und Rücklauf. In VBA kannst du auch einfach auf die vbCrLf-Konstante zugreifen:
Code:
MeinString = Join(dasArray, vbCrLf)
3. Wandeln eines Zellbereichs in ein Array.
Damit aus deinem Zellbereich ein Array wird, dass du mit Join in einen String wandeln kannst, kannst du den Zellbereich einfach einer Variant-Variblen zuweisen. VBA macht für dich automatisch ein (zweidimensionales) Array daraus:
Code:
MeinArray = Range("C6:C80")

4. Wandeln eines zweidimensionalen Arrays in ein eindimensionales Array durch transponieren:
Blöderweise sind Arrays aus Rangeobjekten immer zweidimensional, selbst wenn du nur eine Spalte oder Zeile eingelesen hast. Join kann allerdings nur eindimensionale Arrays verarbeiten. Daher:
Code:
Eindimensional = WorksheetFunction.Transpose(zweiDimensionalesEinspaltenArray)
5. Zugriff auf den gefüllten Bereich
Es gibt mehrere Methoden, um auf die Zellen eines Bereiches zuzugreifen. Wenn der Bereich unterhalb der Startzelle durchgehend gefüllt ist, und aus mehr als einer Zelle besteht, funktioniert die Simulation der Tastenkombination Strg+Pfeil runter ganz gut. Ein zusammenhängendes Rangeobjekt aus Anfangs und Endzelle erzeugst du mit der Range-Methode:
Code:
Set ZellBereichUnterhalb = Range(Cells(1,1),Cells(1,1).End(xlDown))
Wenn nicht sicher ist, das mehr als eine Zelle gefüllt ist, dann geht es auch von unten:
Code:
Set ZellBereichUnterhalbVonUnten = Range(Cells(1,1), Cells(Rows.Count,1).End(xlup))
Eine dritte Alternative (und die, die ich verwenden würde) wäre der Zugriff auf eine bestimmte Spalte der zusammenhängend Gefüllten Region um eine Zelle herum:
Code:
Set ZellBereichUmZelleHerum = Cells(1).CurrentRegion.Columns(1)
Damit hättest du schon fast alles, was du benötigst.
6. Einfache Kontrollstruktur
Weil du noch einen Unterschied machen willst, je nachdem, ob der Zellbereich überhaupt gefüllt ist, brauchst du noch Kenntnisse über eine einfache Kontrollstruktur Wie If...Then...Else...End If. Diese Struktur führt die Befehle die Zwischen Then und Else stehen aus, wenn die Bedingung des If-Bereichs wahr ist und die Befehle zwischen Else und End If, falls die Bedingung nicht zutrifft:
Code:
If Rnd() > 0.5 Then
   Debug.Print "Die Zufallszahl war größer als 0,5"
Else
   Debug.Print "Die Zufallszahl war nicht größer als 0,5"
End If
7. Ereignishandler für das Click-Event
Damit dein Code ausgeführt wird, brauchst du noch einen "Trigger". Du hast dich für das Click-Event des Buttons entschieden.
Code:
Sub DeinButton_Click()
   Debug.Print "Knopf gedrückt"
End Sub

Damit hättest du alles, was du für deine ansonsten ziemlich zweckfreie Übung benötigst.

Viel Spaß beim Nachbauen!
derHöpp
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste