Hej! Du skall använda Split, för att skapa arrayen. Men ! ser stängen verkligen ut så där ? <b>Som Stängen ser ut nu kan den inte ligga i en String DataTyp pga Citattecknen.</b> >Som Stängen ser ut nu ! Skrev jag ! Hej! Hej! <code>Hjälp skapa loop
En sträng innehåller text i formatet: "Rad1, Cell1","Rad1, Cell2","Rad1, Cell3"
Kan någon hjälpa mig skapa en Loop som tar ut varje
Rad1, Cell1
och lägger dem i en variabel array?
/Per EricssonSv: Hjälp skapa loop
Som Stängen ser ut nu kan den inte ligga i en String DataTyp pga Citattecknen.Sv: Hjälp skapa loop
Inte?
Dim Sträng As String
Sträng = """Rad1, Cell1"",""Rad1, Cell2"",""Rad1, Cell3"""
Debug.Print Sträng
Går ju även läsa in strängar med citattecken från kontroller eller filer.
/JohanSv: Hjälp skapa loop
Det vet väl jag också att man kan fixa med extra citattecken.
Det jag vill veta ser strängen ut som du visar när du tex lägger den i en Label.
Vill du ha med citattecknen i arrayen ?Sv: Hjälp skapa loop
Strängen innehåller raden som jag skrev iallafall. Hur använder man split? Eller snarare: Hur använder man split i en Loop?
/Per EricssonSv: Hjälp skapa loop
Löste det på följande sätt:
<code>
Dim Array() As String
For index = 0 To ThisDocument.lngColumns
Array() = Split(strLine, Chr(34) & "," & Chr(34))
index = index + 1
Next index
</code>
Problemet är att Array(0) börjar med ett citationstecken och den sista kommer att sluta med ett sitationstecken eftersom rad 3 inte är så himla smart.
Därför tänkte jag skriva följande i loopen (efter "Next index" som kontrollerar detta innan den börjar på nästa:
<code>
If Right (Array(), 1) = Chr(34) Then
'Kod som tar bort citatationstecken.
End If
If Left (Array(), 1) = Chr(34) Then
'Kod som tar bort citatationstecken.
End If
</code>
Men hur tar man bort ett tecken i en sträng?
Left (Array(), 1) = vbNullString?
/Per EricssonSv: Hjälp skapa loop
Private Function SplitEx(Value As String, Prefix As String, Suffix As String, Optional Compare As VbCompareMethod) As String()
Dim Begin As Long
Dim Count As Long
Dim Result() As String
Dim PrefixPos As Long
Dim PrefixLength As Long
Dim SuffixPos As Long
Dim SuffixLength As Long
PrefixLength = Len(Prefix)
SuffixLength = Len(Suffix)
PrefixPos = InStr(1, Value, Prefix, Compare)
Do While PrefixPos
Begin = PrefixPos + PrefixLength
SuffixPos = InStr(Begin, Value, Suffix, Compare)
If SuffixPos Then
If Count Then
ReDim Preserve Result(Count)
Else
ReDim Result(Count)
End If
Result(Count) = Mid(Value, Begin, SuffixPos - Begin)
Count = Count + 1
PrefixPos = InStr(SuffixPos + SuffixLength, Value, Prefix, Compare)
Else
Exit Do
End If
Loop
SplitEx = Result
End Function
Public Sub test()
Dim Sträng As String
Dim Data
Dim vTemp
Sträng = """Rad1, Cell1"",""Rad1, Cell2"",""Rad1, Cell3"""
Data = SplitEx(Sträng, """", """")
For Each vTemp In Data
Debug.Print vTemp
Next
End Sub
</code>