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

Focus terug in Listbox1

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

rudyV

Gebruiker
Lid geworden
25 feb 2019
Berichten
34
Geacht forum

In het bijgevoegde bestand staan op het userform frmMenu 2 listboxen.
Na selectie in Listbox1 en vervolgens click op listbox2, opent frmCls

Vóór de click op listbox2 had Listbox1 focus op een bepaald item.

Mijn vraag: Nadat frmCls sluit, hoe krijgt listbox1 de focus terug op het item dat voorheen de focus had?

Met vriendelijke groet,

Ruud.
 

Bijlagen

Laatst bewerkt:
Als ik je goed begrijp, hier een mogelijkheid:

In een gewone Module:
Code:
Public bl As Boolean
Sub DoStuff(ind As Long)
    frmMenu.ListBox2.ListIndex = -1
        bl = True
    frmMenu.ListBox1.Selected(ind) = True
        bl = False
    frmMenu.ListBox1.SetFocus
    With New frmCLs
        .Show
    End With
End Sub

Na Dim x as string in
Private Sub ListBox1_Click()
Code:
If bl Then Exit Sub

De (nieuwe code) voor ListBox2_Click:

Code:
Private Sub ListBox2_Click()
Application.OnTime Now(), "'DoStuff " & ListBox1.ListIndex & "'"
End Sub
 
Hallo Eric,

Dank voor je oplossing.
Ik heb jouw oplossing onder een knop gezet om daarmee een nieuwe regel met gegevens aan te maken in een sheet.
Listbox1 heeft een relatie met Listbox2. Gegegevens uit Listbox2 zijn dus gerelateerd aan gegevens in Listbox1.

Ik loop tegen twee zaken aan.
1- De code zoals je voorstelt 'loopt' goed (denk ik), maar als ik het VBA gedeelte sluit en het workbook opnieuw opstart, wordt aangegeven dat Lisbox1 geen focus heeft.
In de module heb ik toegevoegd
Code:
If frmMenu.ListBox1.ListIndex = -1 Then
    MsgBox "U moet een adres selecteren", vbInformation + vbOKOnly, "Niets geselecteerd"
    Exit Sub
ElseIf frmMenu.ListBox1.ListIndex <> -1 Then
    If frmMenu.ListBox1.ListIndex > -1 And frmMenu.ListBox1.Selected(frmMenu.ListBox1.ListIndex) Then
        strID1 = frmMenu.ListBox1.List(frmMenu.ListBox1.ListIndex, 0)
        stradres = frmMenu.ListBox1.List(frmMenu.ListBox1.ListIndex, 1)
        strpostcode = frmMenu.ListBox1.List(frmMenu.ListBox1.ListIndex, 2)
        strplaats = frmMenu.ListBox1.List(frmMenu.ListBox1.ListIndex, 3)
    End If
End If
2- Ik zou graag zien dat na het toevoegen van een nieuwe regel Listbox2 ververst wordt.

Hopelijk ben ik duidelijk.

Groet, Ruud.
 
Plaats eens een bestandje met hetgeen je nu hebt (code)
 
Hierbij het aangepaste, 'uitgeklede' bestand.

Groet, Ruud.
 

Bijlagen

Laatst bewerkt:
Dag Ruud,

Het voorbeeldje maakt het voor mij niet duidelijk, wellicht kun je nog even beschrijven wat de handelingen zijn en wat je wilt wat er op dat moment gebeurt)
 
Misschien eerst deze eens onder de loep nemen:
Code:
Private Sub UserForm_Activate
Bij elke Activate wordt de listbox aangevuld met dezelfde data.
 
Laatst bewerkt:
Hallo VenA,
Dank voor je bericht. Je hebt natuurlijk gelijk. Bij het uitkleden van het workbook heb ik dit over het hoofd gezien. Dit moet natuurlijk zijn: initialize

@Eric,
Listbox1 ziet op adressen in sheets("Adressen")
Listbox2 ziet op lijsten in sheets("Checklists")
Elke checklist in Listbox2 heeft een relatie met een adres in Listbox1 door het ID van adressen (een op veel, zeg maar)

Knop 'nieuwe checklist' moet een nieuwe checklist aanmaken via frmVerwijderaar.
Eerst echter, worden adresgegevens uit "Adressen" gehaald en geparkeerd op frmVerwijderaar.
Uit frmverwijderaar na de keuze uit de listbox 'ListV' worden de adresgegevens, alsmede de verwijderaars gegevens, verkregen via ListV ingevoerd in Sheets("Checklists"). De overeenkomstige IDs in de beide sheets maakt de relatie.

Bij een click in Listbox1 worden corresponderende checklists in Listbox2 getoond (if any).
Bij een Click in Listbox2 wordt een ander form (niet aanwezig) geopend met daarin resultaten van de checklist (like a charm) :)

Wat wil(de) ik.
Bij het aanmaken van de nieuwe checklist via de knop 'nieuwe checklist' hoopte ik, dat de focus terug op het laatste item van Listbox1 (het adres) ook listbox2 zou verversen en de nieuw aangemaakte checklist zou laten zien.
Het hele 'probleem' betreft dus twee zaken:
-Focus terug op laatste item in Listbox1 (jouw code)
-Verversen van listbox2 na nieuwe invoer, zodat nieuwe checklist zichtbaar wordt zonder het form opnieuw te hoeven starten.

Tevens:
Bij click op 'nieuwe checklist' wordt eerst gekeken of een adres focus heeft. Zo niet: berichtje en exit sub.
In mijn vorige bericht en na het wijzigen van de code, bleek dat listbox1 helemaal geen focus meer heeft, ondanks dat de blauwe balk vrolijk over het gekozen adres blijft staan.
Overigens werkt de focus wel als het form frmmenu wordt geopend via het vba-scherm en niet meer als het workbook 'koud' geopend wordt.

Hopelijk heb ik mij nu duidelijker verklaard.

Groet, Ruud.
 
Laatst bewerkt:
eea toegevoegd, weggehaald en gekopieerd in bijgaand bestandje

Let wel; ik denk dat eea wel wat makkelijker moet kunnen, heb nu voortgeborduurd op hetgeen er al was.

Het formulier werkte niet bij WorkBook open omdat je een nieuwe instantie van het formulier opent en er in de code ' keihard' naar het oorspronkelijke formulier wordt verwezen.
Ik heb het woordje new dus weggehaald. Overigens is het eigenlijk wel goed om een nieuwe instantie van een class/form te openen, maar dat betekent wel wat code herschrijven.

Vervolgens een stuk code uit het ListBox1 click event gekopieerd naar de Sub Dostuff (het updaten van Listbox2)

en tenslotte initialize van het activate event gemaakt
 

Bijlagen

Laatst bewerkt:
Hallo Eric,

In één woord: Geweldig.
Dank je wel.

Vriendelijke groet,

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