• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Ubound

Status
Niet open voor verdere reacties.

Jack Nouws

Terugkerende gebruiker
Lid geworden
16 apr 2008
Berichten
1.396
Hallo

Ik wil wat met de functie Ubound gaan doen. Wie weet er een paar simpele voorbeelden om wat met deze functie te doen? Omdat deze functie toch makkelijk wordt toegepast in VBA, wil ik em ook onder de knie krijgen.

Met vr gr
Jack
 
1-dimensionele matrix

Code:
sub tst()
  sq=split("a|b|c|d","|")
  c0=ubound(sq)
  for j=0 to ubound(sq)
    sq(j)=asc(sq(j))
  next
End Sub

2-dimensionele matrix
Code:
sub tst2()
  sq=Thisworkbook.sheets(1).range("A1:K10")
  c0=ubound(sq)
  c1=ubound(sq,2)
End Sub
 
Hallo
Bij de 2-dimensionele matrix wordt (als ik het goed heb) bij c0 het Rijnr. weergegeven
en bij c1 het Kolomnr. (Zie code hoe ik het bekeken heb)
Code:
Sub tst2()
  sq = ThisWorkbook.Sheets(1).Range("A1:K10")
  c0 = UBound(sq)
  MsgBox c0
  c1 = UBound(sq, 2)
  MsgBox c1
End Sub

Bij de 1-dimensionele matrix heb ik meer moeite, gaarne uitleg hierover AUB.

Met vr gr
Jack
 
Bij de 1-dimensionele matrix heb ik meer moeite
Jack, zie Ubound als iets heel simpels. Het enige dat er wordt gedaan is het tellen van het aantal elementen in de array. Een enkelvoudige array is dus 1 regel en veel kolommen. Bij een 2 dimensionale array ga je dus een stapje verder en heb je naast de kolommen ook meerdere regels.

Probeer deze enkelvoudige array maar 'ns
Code:
Sub ff()

    Range("A1").Resize(, 5) = Array(1, 2, 3, 4, 5)
    Range("A1").Resize(5) = WorksheetFunction.Transpose(Array(1, 2, 3, 4, 5))
    

End Sub
Dan zie je dat als je iets wilt wegschrijven op je sheet, dat je je de Worksheetfunction.Transpose moet gebruiken om je array in 1 kolom met meerdere regels te plaatsen.

Groet, Leo
 
Hallo

Deze topic stond nog altijd open omdat de Ubound functie me nog steeds bezig houdt, dus van daar dat ik hem weer even oppik.

Nu werk ik met deze code om getallen in 4voud onder elkaar te zetten. Is het nu ook mogelijk om met de Ubound en Transpose functie hetzelfde te bereiken?

Met vr gr
Jack
Code:
Private Sub CommandButton1_Click()
Dim c As Range
Dim i As Variant
 Application.ScreenUpdating = False
    
        For i = 1 To Range("C2").Value
            Set c = [A65536].End(xlUp)
                Cells(c.Row, 1).Offset(1).Resize(4) = Split(c.Value + 1)
        Next
        
 Application.ScreenUpdating = True
End Sub
 
Laatst bewerkt:
Spendeer dan maar eerst aandacht aan de code die je nu hebt. Die Split bvb. is van generlei nut hier.
 
Spendeer dan maar eerst aandacht aan de code die je nu hebt. Die Split bvb. is van generlei nut hier.

Hoezo die doet toch wat ik wil :cool:
Code:
Private Sub CommandButton1_Click()
Dim c As Range
Dim i As Variant
 Application.ScreenUpdating = False
    
        For i = 1 To Range("C2").Value
            Set c = Range("A65536").End(xlUp)
                Cells(c.Row, 1).Offset(1).Resize(4) = c.Value + 1
        Next
        
 Application.ScreenUpdating = True
End Sub
Met vr gr
Jack
 
Laatst bewerkt:
Hoezo die doet toch wat ik wil

Dus jij laat gewoon Split in de code staan, omdat die niet doet wat je niet wilt? Begrijpen wie kan.

Ik denk dat je niet helemaal goed gekeken hebt naar de codes van Snb: variabelen worden daar nooit gedeclareerd.

Wigi
 
Dus jij laat gewoon Split in de code staan, omdat die niet doet wat je niet wilt? Begrijpen wie kan.

Wigi

Zoals je kunt zien in mijn laatste quote #10 zie je dat hier Split is weggelaten. En dit is nu de code die ik graag veranderd wil hebben zoals ik in quote #6 heb aangegeven.

met vr gr
jack
 
Ik houd het hierop:

Code:
Sub wigi()

    With [A65536].End(xlUp).Offset(1).Resize(([C2] + 1) * 4)
        .Formula = "=$A$2+INT((ROW()-3)/4)"
        .Value = .Value
    End With

End Sub

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan