Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Textfeld - Inhalt beschränken
#1
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
Antworten Top
#2
Hallo,

versuche einmal die Änderung folgender Codezeile:

Code:
TextboxXYZ = Trim(Tabelle1.Range("A1").Value)
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
[-] Folgende(r) 1 Nutzer sagt Danke an Glausius für diesen Beitrag:
  • ÄxcelFoley
Antworten Top
#3
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
Antworten Top
#4
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
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


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