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

Horizontaal selecteren in VBA lukt niet.

  • Onderwerp starter Onderwerp starter Zerty
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Zerty

Gebruiker
Lid geworden
12 mei 2015
Berichten
110
Hallo,

Ik ben iets aan het uitproberen maar stuit op een probleem.
Een tabel met 10 keer 6 willekeurige cijfers sorteren in oplopende volgorde.

Op Blad 1 lukt het perfect.
Op Blad 2 lukt het sorteren helemaal niet, tabel staat op een andere plaats.
Op Blad 3 de originele versie voor 1 rij van 6 cijfers.

Er zal wel een fout in de Cells-code zitten, denk ik.
Maar heb al heel wat uitgeprobeerd, echter zonder goed resultaat.
Iemand een idee waar ik in de fout ben gegaan?
 

Bijlagen

Code:
Sub sorteren2()
    Dim tempInteger As Integer, i As Integer, j As Integer
    Dim k As Integer
    
    For k = 7 To 16
        For i = [COLOR="#FF0000"]6 To 11[/COLOR]
            For j = [COLOR="#FF0000"]i + 1 To 11[/COLOR]
                If Cells(k, j).Value < Cells(k, i).Value Then
                    tempInteger = Cells(k, i).Value
                    Cells(k, i).Value = Cells(k, j).Value
                    Cells(k, j).Value = tempInteger
                End If
            Next j
        Next i
    Next k
End Sub
Maar deze code is flexibeler en sneller
Code:
Sub tsh()
    Dim Br
    Dim i As Long, j As Long, k As Long
    Dim Temp As Long
    Dim Rng As Range
    
    Set Rng = [COLOR="#FF0000"]Sheets(1).Cells(1, 1)[/COLOR].CurrentRegion
    Br = Rng
    For i = 1 To UBound(Br)
        For j = 1 To UBound(Br, 2) - 1
            For k = j + 1 To UBound(Br, 2)
                If Br(i, k) < Br(i, j) Then
                    Temp = Br(i, j)
                    Br(i, j) = Br(i, k)
                    Br(i, k) = Temp
                End If
            Next
        Next
    Next
    Rng = Br
End Sub
Je hoeft in deze opzet alleen maar de positie van het bereik met waarden aan te passen.
 
Laatst bewerkt:
Inderdaad, werkt perfect,
hartelijk dank voor de vlugge reactie.

Zal eens uitpluizen welke logica hier achter zit,
moet blijkbaar nog veel leren, zo te zien.

Zerty.
 
Bedankt voor deze prachtige tip.
Inderdaad heel wat eenvoudiger in gebruik,
maar ook een ingewikkelde code voor een amateur in VBA (-;
Ik kan er maar uit leren en dat is het leuke aan Excel, ideeën creëren en uitproberen.

Zerty.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan