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

Tabblad kiezen

Status
Niet open voor verdere reacties.

Jack Nouws

Terugkerende gebruiker
Lid geworden
16 apr 2008
Berichten
1.396
Hallo

Ik wil d.m.v. een cbo box er voor zorgen dat de gegevens van mijn UserForm naar het juiste tabblad geschreven worden. Ik ben al een tijdje bezig om dit voor elkaar te krijgen maar het lukt me niet. Ik heb een stukje code meegezonden waar het op dit moment fout loopt. (Het is het stukje waar naar het juiste tabblad verwezen wordt)

Met vr gr
Jack

Code:
Private Sub CmdOK_Click()
Dim MyRange As Variant
Set MyRange = [COLOR="Red"]Worksheets(FrmOverschrijving.CboVanBron.Value)[/COLOR]
    ActiveSheet.Unprotect
 
Het definiëren van de variabele als Variant wordt in de regel afgeraden, zeker omdat het hier om een Range betreft. Dan is het m.i. logischer om het als Range te definiëren.

Verder kan je het voor jezelf heel makkelijk maken door gebruik te maken van de naam van het gekozen tabblad.
Bijv.:
Code:
Worksheets(FrmOverschrijving.CboVanBron.Value).Range("A1") = "test"

Eventueel via een With...End with

Code:
With Worksheets(FrmOverschrijving.CboVanBron.Value)


End with

Met vriendelijke groet,


Roncancio
 
Hallo Roncancio,

Ik heb nu deze code

Code:
Private Sub CmdOK_Click()
Dim MyRange As Variant
Dim MyRange2 As Variant

Set MyRange = Worksheets(FrmOverschrijving.CboVanBron.Value)
Set MyRange2 = Worksheets(FrmOverschrijving.CboNaarBron.Value)

'schermwisseling uitschakelen (flikkeren beeldscherm)
Application.ScreenUpdating = False
legeregel = MyRange.Range("A" & Rows.Count).End(xlUp).Row + 1
legeregel2 = MyRange2.Range("A" & Rows.Count).End(xlUp).Row + 1

If TxtOmschrijving = Empty Then
    MsgBox "Voer 'minimaal' een Omschrijving in!", vbExclamation, "Omschrijving"
    TxtOmschrijving.SetFocus
    Exit Sub
Else

'waar gaan we het opslaan
    MyRange.Range("A" & legeregel) = FrmOverschrijving.TxtDatum.Value
    MyRange.Range("C" & legeregel) = FrmOverschrijving.TxtOmschrijving.Value
    MyRange.Range("D" & legeregel) = FrmOverschrijving.CboVanBron.Text
    MyRange.Range("E" & legeregel) = FrmOverschrijving.CboNaarBron.Value
    MyRange.Range("H" & legeregel) = CInt(FrmOverschrijving.TxtInkomsten.Value)
    MyRange.Range("I" & legeregel) = CInt(FrmOverschrijving.TxtUitgaven.Value)

    MyRange2.Range("A" & legeregel2) = FrmOverschrijving.TxtDatum.Value
    MyRange2.Range("C" & legeregel2) = FrmOverschrijving.TxtOmschrijving.Value
    MyRange2.Range("D" & legeregel2) = FrmOverschrijving.CboVanBron.Text
    MyRange2.Range("E" & legeregel2) = FrmOverschrijving.CboNaarBron.Value
    MyRange2.Range("H" & legeregel2) = CInt(FrmOverschrijving.TxtInkomsten.Value)
    MyRange2.Range("I" & legeregel2) = CInt(FrmOverschrijving.TxtUitgaven.Value)

    MsgBox "Er is van Bron " & CboVanBron & " naar Bron " & CboNaarBron & " geboekt! "
End If

'Nog leveranciers toevoegen of stoppen met invoer
response = MsgBox("Wilt u nog een nieuwe partij toevoegen?", vbYesNo, Title:="Gegevens opslaan?")
    If response = vbNo Then
        Unload Me
    Else
        Dim Ctl As Control
            For Each Ctl In FrmOverschrijving.Controls
               If TypeOf Ctl Is MSForms.TextBox Or TypeOf Ctl Is MSForms.ComboBox Then
                Ctl.Text = ""
                End If
            Next
    CboVanBron.SetFocus
        TxtDatum.Text = Format(Date, "dd/mm/yyyy")
     End If
'Schermwisseling terug inschakelen
Application.ScreenUpdating = True
    ActiveSheet.Unprotect

End Sub

deze code werkt op zich goed, maar hoe zou die dan volgens jou moeten?

Met vr gr
Jack
 
In #1 zeg je dat er problemen zijn met een deel van de code maar in #3 "werkt het op zicht goed".
Dat rijmt niet helemaal.:p

Welke problemen komen er nog voor?
Een ieder heeft een manier van programmeren, waarbij wel een aantal fundamentele uitgangspunten hetzelfde zijn (zoals bijvoorbeeld het definiëren van de variabelen).

Persoonlijk zou ik Exit Sub in mijn code vermijden, omdat dit onnodig is en het niet gezien wordt als voorbeeldig programmeren.

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan