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

Spinbutton in Userform vba code incorrect Help!

Status
Niet open voor verdere reacties.

Ricky2

Gebruiker
Lid geworden
16 mei 2008
Berichten
20
Een poging elders in een ander forum heeft nog geen voldoende houvast geboden om een stukje code te verbeteren gekoppeld aan een zogenaamde spinbutton in een Userform

In bijgaand XLS bestand is een userform opgenomen waarbij je in een werkblad (en ook in het formulier zelf) een drietal gegevens wijzigt in drie naast elkaar gelegen kolommen.

Het gaat hier om een klantnummer (numeriek veld) + 2 andere waarden.

De gehele userform werkt prima, behalve de spinbutton die als doel heeft om de geselecteerde regel omhoog danwel omlaag te verplaatsen.

De 1e keer gaat het altijd goed, daarna verdwijnt op één of andere manier de 'focus' op de listbox waarin deze 3 kolommen ook zichtbaar zijn. Pas als je met je muis een regel bewust wederom selecteert functioneert de spinbutton goed.

Ik moet dus telkenmale opnieuw de betreffende regel in de listbox opnieuw aanklikken.

Dit zelfde probleem doet zich voor met de "verwijder"-button. Ook hier moet ik bij het verwijderen van een aantal regles expliciet de regels iederkeer opnieuw in de listbox selecteren. (de getoonde selectie is nl. niet correct).

Wat doe ik fout.

Ricky.

Overigens is dit de code die aan het userform is gekoppeld:

Code:
Option Explicit
Dim lCurrentListIndex As Long
Dim strRowSource As String
Dim strAddress As String
Dim strSheetName As String
Dim RowCount As Long


Private Sub Delete_Click()
With ListBox
  If .ListIndex < 0 Or .ListIndex = .ListCount - 1 Then Exit Sub
    lCurrentListIndex = .ListIndex + 1
    strRowSource = .RowSource
    strAddress = Range(strRowSource).Address
    strSheetName = Range(strRowSource).Parent.Name
    .RowSource = vbNullString
        With Range(strRowSource)
            .Rows(lCurrentListIndex).Value = vbNullString
        End With
     Sheets(strSheetName).Range(strAddress).Name = strRowSource
    .RowSource = strRowSource
    .Selected(lCurrentListIndex) = True
End With
End Sub

Private Sub SpinButton1_SpinDown()
With ListBox
  If .ListIndex < 0 Or .ListIndex = .ListCount - 1 Then Exit Sub
    lCurrentListIndex = .ListIndex + 1
    strRowSource = .RowSource
    strAddress = Range(strRowSource).Address
    strSheetName = Range(strRowSource).Parent.Name
    .RowSource = vbNullString
        With Range(strRowSource)
            .Rows(lCurrentListIndex).Cut
            .Rows(lCurrentListIndex + 2).Insert Shift:=xlDown
        End With
     Sheets(strSheetName).Range(strAddress).Name = strRowSource
    .RowSource = strRowSource
    .Selected(lCurrentListIndex) = True
End With
    
End Sub

Private Sub SpinButton1_SpinUp()

With ListBox
  If .ListIndex < 1 Then Exit Sub
    lCurrentListIndex = .ListIndex + 1
    strRowSource = .RowSource
    strAddress = Range(strRowSource).Address
    strSheetName = Range(strRowSource).Parent.Name
    .RowSource = vbNullString
        With Range(strRowSource)
            .Rows(lCurrentListIndex).Cut
            .Rows(lCurrentListIndex - 1).Insert Shift:=xlDown
        End With
     Sheets(strSheetName).Range(strAddress).Name = strRowSource
    .RowSource = strRowSource
    .Selected(lCurrentListIndex - 2) = True
      
End With
    
End Sub
 

Bijlagen

Heb je hier al gekeken.

Ik zie de aanbeveling van Wigi niet in je code terug.

Met vriendelijke groet,


Roncancio
 
Oeps ! Dubbel geplaatst dus (en dank aan Wigi

Thanx voor je reactie!!:thumb:

Had deze tip van Wigi niet gezien.:eek:

Ik zal overigens deze 'dubbel' plaatsing in dit forum op afgehandeld zetten !
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan