• 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.

Variabele Range vanaf een bepaald punt

Status
Niet open voor verdere reacties.

toverkamp

Gebruiker
Lid geworden
11 sep 2006
Berichten
403
Hallo,
Ik wil graag een variabele range toepassen. Dit lukt opzich wel maar niet op de manier zoals ik die zou willen. Momenteel ziet de range er bijvoorbeeld zo uit:
Code:
.Range("a6:a11")
Nu zou ik 2 dingen kunnen doen:
1.
Code:
.Range("a:a")
of
2.
Code:
.Range("a6:a65536")

Beide manieren voldoen niet aan mijn eisen:p Bij de eerste komen alle gegevens uit de rij mee, dus ook boven de a6. Hier staan gegevens in die ik niet in een combobox zou willen zien. En de 2e manier kan opzich wel, maar daar wordt het werkblad ontzettend traag van als ik veel van deze range toepas.

Heeft iemand een idee hoe ik de Range zo kan instellen dat hij wel vanaf rij 6 begint, maar daarna variabel is. Het liefst zou ik graag zien, dat Excel alleen die cellen pakt waar ook daadwerkelijk gegevens instaan. Dus dan zie je in een combobox niet zo'n lange schuifbalk.

Alvast bedankt!:thumb:
 
Ferenc,
volgens mij is dit niet wat ik bedoel. In de bijlage in je voorbeeldbestand 'legeregel' kwam ik de volgende codes tegen:
Code:
Sub test()
Dim c As Range

For Each c In Range("A1:A5")
    If c <> "" Then
    Range("A17:A200").Find(What:="", LookIn:=xlValues) = c
    End If
Next

Range("A1").Select

End Sub

Sub testWiGi()
Dim c As Range

For Each c In Range("A1:A5")
    If c <> "" Then
    Range("A" & Range("A18", Cells(Rows.Count, Range("A18").Column).End(xlUp)).Offset(1).SpecialCells(xlCellTypeBlanks).Row) = c
    End If
Next

Range("A1").Select

End Sub

Ik zie volgens mij in beide code's geen variabele range staan. Of zit ik er nu naast?
 
Hoi toverkamp,

Code:
Dim LastRow As Long
LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row
.Range ("a6:a" & LastRow)
 
Spiderman, daar was ik naar op zoek:thumb: Is het ook mogelijk om alleen de cellen in die kolom te selecteren waar ook daadwerkelijk gegevens instaan. Dus die ook alle lege cellen eruit filtert en alle gevulde cellen onder elkaar zet in een list/combobox?
 
Hoi toverkamp,

Zoiets

Code:
Dim LastRow As Long
LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row

Dim r As Range

For Each r In Range("A6:A" & LastRow)
    If Trim(r.Text) <> "" Then ListBox1.AddItem r.Text
Next
 
Spiderman, bedankt voor uw reactie. Alleen hoe zet ik die code in:
Code:
    st = Sheets("database filiaal").Range("b5:b65536")
    sq = Split(String(UBound(st), "|"), "|")
    For j = 1 To UBound(st)
        sq(j) = st(j, 1)
    Next
    gegfiliaalnummer.List = sq

en
Code:
Dim LastRow As Long
LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row


    Select Case accesoirebox.Value
        Case "Type kassa"
            typeaccesoire.List = Worksheets("accesoires").Range("a6:a" & LastRow).Value
            KolomReferentie = 7
 
Hoi toverkamp,

Zo uit de losse pols zou ik zeggen:

Voor de bovenste:
Code:
Dim LastRow As Long
LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row

Dim r As Range

For Each r In Range("B5:B" & LastRow)
    If Trim(r.Text) <> "" Then gegfiliaalnummer.AddItem r.Text
Next

Voor de 2de:
Code:
Dim LastRow As Long
LastRow = Worksheets("accesoires").Cells.SpecialCells(xlCellTypeLastCell).Row


    Select Case accesoirebox.Value
        Case "Type kassa"
                     Dim r As Range

                    For Each r In Worksheets("accesoires").Range("B5:B" & LastRow)
                        If Trim(r.Text) <> "" Then typeaccesoire.AddItem r.Text
                    Next
                    KolomReferentie = 7

Ik denk zoiets
 
bij die bovenste worden ongeveer alleen de eerste 30 rijen geselecteerd. En er staat ook niet in uit welk werkblad de gegevens gehaald moeten worden. Ik had de code als volgt uit aangepast, maar dan worden dus alleen de 1e 30 rijen geselecteerd.
Code:
Dim LastRow As Long
LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row

Dim r As Range

For Each r In Worksheets("database filiaal").Range("B5:B" & LastRow)
    If Trim(r.Text) <> "" Then gegfiliaalnummer.AddItem r.Text
Next
 
Misschien dat ik iets verkeerds zeg, maar probeer de code te snappen.

Als er staat 'Cells.SpecialCells(xlCellTypeLastCell).Row' dan haalt deze de waarde op van de laatste rij. Maar dan wel van je active sheet, dus als je de gegevens van een andere sheet wilt hebben zul je dan wel moeten aangeven.

Ik denk dus zoiets

Code:
[COLOR="Red"]Worksheets("database filiaal").[/COLOR]Cells.SpecialCells(xlCellTypeLastCell).Row
 
Misschien dat ik iets verkeerds zeg, maar probeer de code te snappen.

Arno, je zit er recht op...

Toverkamp,

Ik vul er nog aan toe dat de moeite niet van 1 kant kan blijven komen... Getuige de nu ondertussen reeds 50 (!) begonnen vragen :confused: Je bent nog altijd aan hetzelfde project bezig, dat ondertussen misschien voor 3/4 door helpmij'ers is gemaakt...
 
Ik probeer de code ook te snappen, als je mijn vorige post bekijkt zie je dat ik daar heb toegevoegd "database filiaal" omdat daar de gegevens uitgehaald moeten worden. Dit stond niet in de orginele post van spiderman.

Code:
Dim LastRow As Long
LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row

Dim r As Range

For Each r [COLOR="Red"]In Worksheets("database filiaal").[/COLOR]Range("B5:B" & LastRow)
    If Trim(r.Text) <> "" Then gegfiliaalnummer.AddItem r.Text
Next
 
Met het snappen van de code bedoel ik:

Als je snapt dat je
Range("B5:B" & LastRow)
moet veranderen in
Worksheets("database filiaal").Range("B5:B" & LastRow)

Denk dan eventjes verder na, en kijk waar je variable vandaan komen.
LastRow is de laatste rij van een bepaalde sheet. Als dit de verkeerde waarde is '30' dan ga je kijken waar deze vandaan komt.

Met breakpoints (F9) kom je een heel eind. Gebruik ze bij het debuggen, je kunt gewoon niet zonder. Iedere programmeur gebruikt ze
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan