Splitten van string naar labels

Status
Niet open voor verdere reacties.

weswillem

Gebruiker
Lid geworden
8 nov 2011
Berichten
310
Ik heb 10 labels onder elkaar staan.
Door middel van SPLIT destilleer ik een aantal woorden die daarin zitten
Nu wil dat het eerste woord de text overschrijf van de bovenste label
het volgende woord het label wat daaronder komt, enz. naar gelang
het aantal woorden die in de string zitten.
Maar kennelijk gaat hij eerst naar de onderste label en zo verder naar
boven totdat hij label30 tegen komt. Vult m dan wel maar vervolgens
springt hij uit de FOR.
Bijgaand een voorbeeld één in VB en één in excell, welke werkt.

Bijgaand een 2e vraag.
Bestaat in VB.net ook een groupname voor radiobuttons
Bij elke label hoort 2 optiebuttons, waar een keuze gemaakt kan worden.
Code:
Public Sub WoordSplitsen(ByVal sTaak As String)
        'Dim label As Integer
        'Dim iAantal As Integer
        Dim j As Integer
        Dim sq As Object
        Dim i As Integer
        j = 0
sTaak= "Vegen, Bakken, Koffie zetten"       
        If sTaak = "" Then GoTo Einde
        sq = Split(Replace(sTaak, ",", vbCrLf), vbCrLf)
        For Each Ctrl As Control In grpboxSmiley.Controls
            If TypeOf Ctrl Is Label Then
                For i = 0 To UBound(sq)
                    If Ctrl.Name = "Label3" & j Then 'beginnen bij label30 en dan naar 31
                        Ctrl.Text = sq(i)
                        j = j + 1
                    End If
                Next i
            End If
        Next

Einde:
End Sub
 

Bijlagen

  • smiley1.jpg
    smiley1.jpg
    37,2 KB · Weergaven: 27
  • smiley.jpg
    smiley.jpg
    44,2 KB · Weergaven: 34
Hoi,

Voor het eerste probleem heb ik de volgende code voor je:
[CPP] Public Sub WoordSplitsen(ByVal sTaak As String)
Dim sq() As String

sTaak = "Vegen, Bakken, Koffie zetten"

If sTaak = "" Then Exit Sub

sq = Split(Replace(sTaak, ", ", vbCrLf), vbCrLf)

For Each Ctrl As Control In Me.Controls
If TypeOf Ctrl Is Label Then
Dim LblNr As Integer = Ctrl.Name.Remove(0, 6)
If Not LblNr > sq.Count - 1 Then
Ctrl.Text = sq(LblNr)
End If
End If
Next
End Sub[/CPP]

Ik snapte niet helemaal waarom je die for loop voor sq in de andere for loop had staan, dus die heb ik eruit gehaald. Deze code kijkt naar het nummer van de label (Label30 geeft nummer 0, Label31 geeft nummer 1) en gebruikt dat nummer om een waarde uit de array te halen.

Het if-statement in de loop is nog om te zorgen dat je geen errors krijgt als er labels zijn dan waarden. Die labels blijven dan gewoon zoals ze waren.

Dan nog voor de radiobuttons: Zet alle paren in hun eigen panel. De gebruiker zal er niks van merken en jij hoeft dan geen codes toe te voegen om het te laten werken.

MartinJM
 
Martin,
Bedankt voor zover weer

Heb m getest.
Maar geef volgende foutmelding.
Code:
Het openbare lid Count voor type String() is niet gevonden.
bij
Code:
If Not LblNr > sq.Count - 1 Then
 
Hoi,

Apart, bij mij werkt het wel.... Probeer het eens met "sq.Length", misschien dat dat wel werkt.

MartinJM

[edit]
Je kan anders ook het volgende doen:
[/edit]
Code:
If Not LblNr > UBound(sq) Then
 
Laatst bewerkt:
Yep, Martin, zo werkt het. Het het ook zo geprobeerd alleen vergeten die -1 weg te halen
Lenght werkt niet wel met die Ubound.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan