Office-Fragen.de
Zellenformatierung Listbox gleiches Format - Druckversion

+- Office-Fragen.de (https://office-fragen.de)
+-- Forum: Microsoft Office (https://office-fragen.de/forum-1.html)
+--- Forum: Excel (https://office-fragen.de/forum-2.html)
+--- Thema: Zellenformatierung Listbox gleiches Format (/thread-29159.html)

Seiten: 1 2 3


Zellenformatierung Listbox gleiches Format - Frank-Kan - 20.06.2024

Hallo Gemeinde!
Ich habe in einer Zelle die Zahl 4001.1234.30 . 
Um nicht jedes mal die 2 Punkte anzugeben, schreibe ich 4001123430 in die Zelle. 
Die Zelle befindet sich in Spalte A. Die Zelle ist mit 0000"."0000"."00 formatiert. 
So das ich 4001123430 eingebe aber 4001.1234.30 erscheint. Ok. 
Jetzt gibt es eine Listbox die die Spalte ausliest und in der Listbox man einen Eintrag auswählen kann. 
Aber in der Listbox steht dann 4001123430 zur Auswahl ohne die beiden Punkte. 
Also es erscheint nicht in der Listbox 4001.1234.30. 
Wie kann ich das machen das per VBA die beiden Punkte zu sehen sind in der Listbox?
Oder gibt es vertikale Trennlinien in der Listbox?
Danke


RE: Zellenformatierung Listbox gleiches Format - PetrolMaxxe - 21.06.2024

Hallo,

nach diesem Prozip ListboxZelle() = Format(ListboxZelle(),"####.####.##")

ListboxZelle() kann auch ein eine ArrayZelle oder die .Cells() sein - was auch immer.

Gruß Uwe


RE: Zellenformatierung Listbox gleiches Format - PetrolMaxxe - 22.06.2024

Hallo,

sorry, das passiert manchmal, wenn man eine Antwort mit dem Tablet schreibt und nicht noch mal drüber schaut.

Korrektur:
nach diesem Prinzip ListboxZelle() = Format(ListboxZelle(),"####.####.##")

ListboxZelle() kann auch ein eine ArrayZelle oder die .Cells() sein - was auch immer.

Gruß Uwe


RE: Zellenformatierung Listbox gleiches Format - HKindler - 22.06.2024

Hi,

du könntest auch deine Listbox mit der Text-Eigenschaft statt der Value-Eigenschaft der betreffenden Zelle befüllen.


RE: Zellenformatierung Listbox gleiches Format - RPP63 - 23.06.2024

Moin!
Ja, das ginge per .AddItem-Methode (nicht jedoch per Zuweisung zur .List-Eigenschaft):
Code:
Sub Fill()
Dim Zelle As Range
For Each Zelle In Range("C1:C3")
  ListBox1.AddItem Zelle.Text
Next
End Sub

Ergibt:
[Bild: jlOu5W2.png]

Jetzt kommt ein wichtiges ABER:
In der Zelle steht die ZAHL 1234567890
In der Listbox steht der TEXT "1234.5678.90"

Folglich muss, sollte man Beziehungen zwischen Listbox und Zellinhalt benötigen, der Text wieder in eine Zahl umgewandelt werden:
Code:
CDbl(Replace(ListBox1.Text, ".", ""))

Gruß Ralf


RE: Zellenformatierung Listbox gleiches Format - Frank-Kan - 29.06.2024

Hallo!
Ich komme jetzt erst dazu zu antworten.
Ich habe die Antworten von Euch versucht umzusetzen.
Komme dabei aber auch nicht richtig weiter.
In der UserForm (Initialize)
Stand ursprünglich:
Code:
Dim ws As Worksheet
Dim letzteZeile As Long
Dim i As Long
Set ws = ThisWorkbook.Sheets("Prüfkontur")
letzteZeile = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
For i = 2 To letzteZeile
Me.ListBox1.AddItem ws.Cells(i, "A").Value
Next i
In dem CommandButton in der Userform neben der ListBox steht:
Code:
Private Sub CommandButton1_Click()
'Userform5
'Konturen Zeichnung laden
'Überprüfung ob ein Wert aus der ListBox ausgewählt wurde
If Me.ListBox1.ListIndex <> -1 Then
Dim letzeZeile As Long
Dim wert As String
'Me.ListBox1 = Format(ListBox1(), "####.####.##")
Zeichnungsnummer = Me.ListBox1.Value
'Wert in Tabelle Prüfkontur Spalte A suchen.
letzteZeile = Worksheets("Prüfkontur").Cells(Worksheets("Prüfkontur").Rows.Count, "A").End(xlUp).Row
Dim zeilein_Kontur As Long

zeilein_Kontur = Application.Match(Zeichnungsnummer, Worksheets("Prüfkontur").Range("A1:A" & letzteZeile), 0)
Die Userform wurde abgeändert in :
Code:
Dim ws As Worksheet
    Dim letzteZeile As Long
    Dim i As Long
    Dim rawValue As String
    'Dim formattedValue As String
'Dim formattedValue As Long
    Set ws = ThisWorkbook.Sheets("Prüfkontur")
    letzteZeile = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' Leert die ListBox zuerst
    Me.ListBox1.Clear

    For i = 2 To letzteZeile
        rawValue = ws.Cells(i, "A").Value
        rawValue = CStr(rawValue)
        formattedValue = Left(rawValue, 4) & "." & Mid(rawValue, 5, 4) & "." & Right(rawValue, 2)
        Me.ListBox1.AddItem formattedValue
    Next i
Die Listbox liefert jetzt die gewünschten Punkte an der richtigen Stelle.
Allerdings kommt jetzt der Fehler Typen unverträglich. (13) In dem CommandButton. Bei:
zeilein_Kontur = Application.Match(Zeichnungsnummer, Worksheets("Prüfkontur").Range("A1:A" & letzteZeile), 0) 
Was muss ich da abändern?
Vielen Dank


RE: Zellenformatierung Listbox gleiches Format - RPP63 - 30.06.2024

(29.06.2024, 17:47)Frank-Kan schrieb: Ich habe die Antworten von Euch versucht umzusetzen.
Hmmmh!
Davon sehe ich leider nichts …  Sad
Weder sehe ich das Füllen per .Text-Eigenschaft noch wurde mein wichtiger Hinweis berücksichtigt.
Zitat:Jetzt kommt ein wichtiges ABER:
In der Zelle steht die ZAHL 1234567890
In der Listbox steht der TEXT "1234.5678.90"

Folglich muss, sollte man Beziehungen zwischen Listbox und Zellinhalt benötigen, der Text wieder in eine Zahl umgewandelt werden
Deshalb kommt der Laufzeitfehler 13
Man kann halt Äpfel nicht mit Birnen vergleichen (.Match).
Auch dazu habe ich vorausschauend bereits eine Lösung angeboten.

Wenn ich mit Application.Match arbeite, deklariere ich die Variable grundsätzlich als Variant!
Das hat den Vorteil, dass auch ein Fehler aufgenommen werden kann, wenn nichts gematcht wurde.
Prüfung erfolgt dann mittels
If Not IsNumeric(Variable) Then …
Alternativ kann man auch die Range.Find-Methode nutzen und sie einer Range-Variablen zuweisen.
Die zugehörige Prüfung:
If Not Variable Is Nothing Then …

Gruß Ralf

P.S.:
Ich schreibe heute noch eine Überarbeitung Deiner Code-Fragmente.


RE: Zellenformatierung Listbox gleiches Format - Frank-Kan - 30.06.2024

Hallo Ralf. 
Danke für deine Antwort.
Ich sollte nichts auf die Schnelle machen....


RE: Zellenformatierung Listbox gleiches Format - RPP63 - 30.06.2024

Zunächst das "etwas" geschrumpfte _Initalize()
Code:
Private Sub UserForm_Initialize()
Dim i&
With Worksheets("Prüfkontur")
  For i = 2 To .Cells(2 ^ 20, 1).End(xlUp).Row
    ListBox1.AddItem .Cells(i, 1).Text
  Next
End With
End Sub

Der Suchbutton:
Code:
Private Sub CommandButton1_Click()
Dim Fund As Variant
If ListBox1.ListIndex > -1 Then
  Fund = _
    Application.Match(CDbl(Replace(ListBox1.Text, ".", "")), _
    Worksheets("Prüfkontur").Columns("A"), 0)
  If Not IsError(Fund) Then
    MsgBox ListBox1.Text & " befindet sich in Zeile: " & Fund
  End If
End If
End Sub
Übungsdatei im Anhang.


RE: Zellenformatierung Listbox gleiches Format - Frank-Kan - 01.07.2024

Vielen Dank Klaus für deine Mühe und die Datei, das funktioniert.
Jetzt nur noch der Praxis anpassen.