Clever-Excel-Forum

Normale Version: Textfeld - Inhalt beschränken
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Forum!

Ich habe ein Makro, mit dem ich aus einer anderen Excel Datei einen Wert auslesen kann. Den ganzen langen Code lasse ich erstmal der Übersicht halber weg, wäre auch zu speziell (denke ich).

Der Ablauf:
Der Wert der Zelle A1 wird aus Exceldatei1 ausgelesen und kopiert - anschließend in Exceldatei2 / Tabelle1 importiert und zwischengespeichert.

Code:
Option Explicit
Function AusleseDatei (sFilename As String, sExtSheet As String) As Boolean
Dim rng As Range, sFile As String, sPath As String, oldStatusBar As Boolean
Dim zei As Long, intPos As Integer
intPos = InStrRev(sFilename, "\")
sPath = Left(sFilename, intPos)
sFile = Mid(sFilename, intPos + 1)
With Sheets("Tabelle1")
.Cells(1, 1).Formula = "='" & sPath & "[" & sFile & "]" & sExtSheet & "'!A1"
Set rng = .Range("A1:A5")
rng.Value = rng.Value
Worksheets("Tabelle1").Range("A1:A5").NumberFormat = "General"
AusleseDatei = WorksheetFunction.CountBlank(Sheets("Tabelle1").Range("A1:A5")) = 0
End With
End Function



Der Wert wird dann in einer Userform ausgegeben:
Code:
TextboxXYZ = Tabelle1.Range("A1").Value

Ich habe nun das Problem, dass das Projekt natürlich im System definiert ist. Es beginnt mit P, es folgen 9 Zahlen und in manchen Fällen ein einzelner Buchstabe. Hier fällt mir aber keine sinnige Lösung ein, damit kein Leerzeichen auftaucht oder andere sonderliche Fehler passieren. (P_123456789 // P123456789_A // ... )
Begrenze ich die Textbox auf 10 Stellen erzeuge ich einen Fehler. Ich könnte auch nur die ersten 10 Zeichen importieren, aber dann habe ich in seltenen Fällen Leerzeichen drin. Ich hoffe man versteht die Probleme, auch wenn diese nur selten auftauchen. ^^

Hat jemand eine schlaue Idee? Smile
Hallo,

versuche einmal die Änderung folgender Codezeile:

Code:
TextboxXYZ = Trim(Tabelle1.Range("A1").Value)
Ich habe eine Lösung gefunden (bzw. ChatGPT, da ich mit Trim nicht weiterkam), dennoch danke für den Tipp!

 
Code:
  Dim auslesenWert As String
    auslesenWert = CStr(Sheets("Tabelle1").Cells(5, 1).Value) ' Den ausgelesenen Wert in einer Variable speichern

    ' Überprüfung und Anpassung des Werts
    If Len(auslesenWert) > 0 Then ' Stelle sicher, dass der Wert nicht leer ist
        Dim neuerWert As String
        If Len(auslesenWert) > 8 Then ' Überprüfen, ob der Wert länger als 8 Zeichen ist
            neuerWert = Left(auslesenWert, 8) ' Die ersten 8 Zeichen des Werts behalten
            Dim letztesZeichen As String
            letztesZeichen = Mid(auslesenWert, 9, 1) ' Das neunte Zeichen überprüfen
            If Not IsNumeric(letztesZeichen) Then ' Überprüfen, ob das neunte Zeichen kein numerisches Zeichen ist (Buchstabe)
                neuerWert = neuerWert & letztesZeichen ' Den Buchstaben an den gekürzten Wert anhängen
            End If
        Else
            neuerWert = auslesenWert ' Wenn der Wert bereits 8 Zeichen oder kürzer ist, den Wert unverändert lassen
        End If
       
        ' Den neuen Wert in die Zelle A5 schreiben
        Set zielZelle = Sheets("Tabelle1").Cells(5, 1)
        zielZelle.Value = neuerWert
    End If
Viel einfacher:

Code:
With getobject(filename)
  cells(1)= .sheets(1).celss(1).Value
  .close 0
end with

Code:
Private SUb Userform_initialize()
  TextBox1=split(sheets(1).cells(1))(0)
End Sub