tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
894
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von waswiewo
    waswiewo waswiewo ist offline Mitglied Gold
    Registriert seit
    Dec 2007
    Ort
    Detmold, Germany, Germany
    Beiträge
    114
    Hallo Leute!!

    Ich stehe vor nem kleinen Problem, und zwar:

    Ich habe ein Label (L1), welches bei einem Spiel ein Ergebnis anzeigt. Sobald dieses Ergebnis zwischen 2 und 170 liegt, wird in einem weiteren Label (fsp) ein dazu gehörender Text angezeigt. Dies habe ich bislang mit einem VLookup gemacht, wobei ich die Daten in einer Exeltabelle stehen habe.

    Nun möchte ich - mehr aus Interesse - versuchen Diese Daten aus einer *.txt-Datei auszulesen und das Ergebnis auch in einem Label (fsp.Value) ausgeben.

    Das ganze möchte ich in einem Modul speichern, weil ich öfter während des Spiels darauf zugreife.

    Ich bin momentan hier:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    Public Sub Finish_suchen()
     
    Dim ReadFile As String, rcount As Long
    Dim Fso As Object, TextDat As Object
     
    ReadFile = Application.GetOpenFilename("finishes.txt")
    If ReadFile = "Falsch" Then Exit Sub
    Close #1
     
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set TextDat = Fso.OpenTextFile(ReadFile, 1, False)
    Do While TextDat.AtEndOfStream <> True
    rcount = rcount + 1
    varSuchbegriff = TextDat.ReadLine
    If varSuchbegriff = True Then
    fsp.Value = Text
    End If
    Loop
    TextDat.Close
     
    End Sub

    Obigen Code habe ich im Netz gefunden, versucht zu verstehen, und dann versucht auf mein Problem hin anzupassen. Bislang ohne Erfolg.

    varSuchbegriff ist eine Public Variabel und enthält immer eine Zahl von 2 - 170.

    Die Textdatei ist so aufgebaut:

    170;Text zu 170
    169;Text zu 169
    .
    .
    .
    2;Text zu 2

    In dem Label "fsp" möchte ich nur z.B. "Text zu 170" wiedergeben. Da komm ich gerade überhaupt nicht mehr weiter mit meinem "Können".
     
    • MfG waswiewo

  2. #2
    Avatar von waswiewo
    waswiewo waswiewo ist offline Mitglied Gold
    Registriert seit
    Dec 2007
    Ort
    Detmold, Germany, Germany
    Beiträge
    114
    Damit es nicht zu unübersichtlich wird, schreibe ich eine Antwort auf meine eigene Frage =)

    Bin jetzt schon einmal weiter gekommen. Folgender Code zeigt mir schonmal die passende Zeile an und gibt sie auch aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
        Dim fso, fsoFile, fsoText
        Dim x As String
        Dim i As Long
        Const fsoForReading = 1
        
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set fsoFile = fso.OpenTextFile("E:\VBA Projekte\Dart Rechner - Test mit txt statt xml\finishes.txt", fsoForReading)
        fsoText = Split(fsoFile.readall, vbCrLf)
        fsoFile.Close
     
        For i = 0 To UBound(fsoText) - 1 ' ohne letzte Zeile
            If InStr(fsoText(i), varSuchbegriff) Then x = fsoText(i)
        Next i
        
        fsp.Caption = x: finish.Caption = x

    Doch wie stelle ich es nun an, dass nur der Wert hinter dem ";" angezeigt wird**** Bei mir wird die komplette Zeile angegeben.

    Wär nett wenn ihr nen kleinen Anstoß geben könntet. Habe schon irre viel rumprobiert!

    Mfg
     
    • MfG waswiewo

  3. #3
    Avatar von waswiewo
    waswiewo waswiewo ist offline Mitglied Gold
    Registriert seit
    Dec 2007
    Ort
    Detmold, Germany, Germany
    Beiträge
    114
    Soo, hab es nun nach SEHR, SEHR langem rumprobieren auch ohne eure Hilfe geschafft.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
        Dim fso, fsoFile, fsoText
        Dim x As String
        Dim i As Long
        Const fsoForReading = 1
        
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set fsoFile = fso.OpenTextFile("E:\VBA Projekte\Dart Rechner - Test mit txt statt xml\finishes.txt", fsoForReading)
        fsoText = Split(fsoFile.ReadAll, ";")
        fsoFile.Close
     
        For i = 0 To UBound(fsoText) - 1
            If InStr(fsoText(i), (varSuchbegriff - 1)) Then x = fsoText(i)
        Next i
        
        fsp.Caption = x: finish.Caption = x


    Hierbei hab ich

    Code :
    1
    
    fsoText = Split(fsoFile.ReadAll, vbCrLf)

    durch

    Code :
    1
    
    fsoText = Split(fsoFile.ReadAll, ";")

    Dadurch wurde aber immer die Zeile vor derjenigen, die ich haben wollte, ausgegeben! Habe dann bei dem Suchwort/ -zahl einfach ein "-1" dazugepackt, nun geht's! Aber kann man dies nicht auch anders lösen?
     
    • MfG waswiewo

Ähnliche Themen

  1. Vlookup - Laufzeitfehler 1004
    Von waswiewo im Forum Visual Basic 6.0
    Antworten: 5
    Letzter Beitrag: 21.01.11, 17:47
  2. Antworten: 3
    Letzter Beitrag: 10.12.08, 12:01
  3. Textdatei in neue Textdatei schreiben
    Von YukiNoHana im Forum PHP
    Antworten: 15
    Letzter Beitrag: 07.09.08, 17:43
  4. [Excel] Leere Zelle statt N/A bei VLOOKUP
    Von SandmannX im Forum Office-Anwendungen
    Antworten: 3
    Letzter Beitrag: 10.03.08, 07:44
  5. Textdatei
    Von dumm im Forum PHP
    Antworten: 16
    Letzter Beitrag: 04.06.06, 01:08