• 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 code maken !

Status
Niet open voor verdere reacties.

danny147

Terugkerende gebruiker
Lid geworden
29 apr 2007
Berichten
4.744
Beste, ;)

Ik heb een code zitten, maar wil deze ook in een ander Userform variabel maken.

Bestaande code:

Code:
Sub tst()
With ActiveSheet
    For i = 9 To 1745 Step 4
    For Each cl In Range(Cells(i, 17), Cells(i, 23))
        If Not IsError(cl) Then
            If Not cl.Value = "" Then
                sq = sq & cl.Value & "|"
            End If
        End If
    Next cl
    Next i
.[E2000:E2500].ClearContents
.[E2000].Resize(UBound(Split(sq, "|"))) = Application.Transpose(Split(sq, "|"))
End With
End Sub

Veranderen in:

Code:
Sub tst2()
[COLOR="red"][B]With sheets (ComboBox1.value)[/B][/COLOR]   
 For i = 9 To 1745 Step 4
    For Each cl In Range(Cells(i, 17), Cells(i, 23))
        If Not IsError(cl) Then
            If Not cl.Value = "" Then
                sq = sq & cl.Value & "|"
            End If
        End If
    Next cl
    Next i
.[E2000:E2500].ClearContents
.[E2000].Resize(UBound(Split(sq, "|"))) = Application.Transpose(Split(sq, "|"))
End With
End Sub

Bij het rode gedeelte krijg ik steeds de foutmelding.

Groetjes Danny. :thumb:
 
hoi Danny

een combobox maakt van een getal een tekst
je moet van de waarde een getal maken of je moet de exacte blad namen opgeven

groet sylvester
 
Beste sylvester-ponte ;)


Met de ComboBox1 kan men kiezen uit:

HO, STL, KWA, WWA, SIDGAL, ALD en Alle

Groetjes Danny. :thumb:
 
dan :

With Sheets(Sheets("HO").ComboBox1.Value)

in dit geval moet je combobox1 op sheet "HO" staan.

groet sylvester
 
Wijzig dit eens:
Code:
Sub tst2()
With sheets (ComboBox1.value)   
 For i = 9 To 1745 Step 4
    For Each cl In [B][COLOR="red"].[/COLOR][/B]Range([B][COLOR="red"].[/COLOR][/B]Cells(i, 17), [B][COLOR="red"].[/COLOR][/B]Cells(i, 23))
        If Not IsError(cl) Then
            If Not cl.Value = "" Then
                sq = sq & cl.Value & "|"
            End If
        End If
    Next cl
    Next i
.[E2000:E2500].ClearContents
.[E2000].Resize(UBound(Split(sq, "|"))) = Application.Transpose(Split(sq, "|"))
End With
End Sub

Kijk naar de rode punten.

Mvgr. Cobbe
 
Beste Cobbe, ;)

De fout ligt hem in de eerste regel, nl:

Code:
With sheets (ComboBox1.value)
De eerste code gebruik ik als het juiste tabblad openstaat, daarom activesheet.
Dit werkt perfect.

Nu wil ik via een userform met een ComboBox1 een lijst van tabbladnamen weergeven.

Zet ik het volgende stukje code erin, dan werkt het:

Code:
Sheets(ComboBox1.Value).Select
en dan With Activatesheet enz...

Maar dan staat het gewenste tabblad open en dat wil ik niet.

Groetjes Danny. :thumb:
 
Gokje:

Jouw code staat in een module en deze roep je aan middels de naam van de sub?
Zo ja zorg dan dat de waarde van de Combobox wordt opgeslagen in een publieke variabele of plaats de code in het codeblok achter het userform.
Daarnaast uiteraard de code wijzigen (zie opm. Cobbe) vwb de punten.
 
Als je verwijst naar een combobox van een userform, dan dien je wel aan te geven welke userform je bedoelt!

Code:
Sub tst2()
With Sheets([B][COLOR="red"]UserForm1.[/COLOR][/B]ComboBox1.Value)
 For i = 9 To 1745 Step 4
    For Each cl In Range(Cells(i, 17), Cells(i, 23))
        If Not IsError(cl) Then
            If Not cl.Value = "" Then
                sq = sq & cl.Value & "|"
            End If
        End If
    Next cl
    Next i
.[E2000:E2500].ClearContents
.[E2000].Resize(UBound(Split(sq, "|"))) = Application.Transpose(Split(sq, "|"))
End With
End Sub

Met vriendelijke groet,


Roncancio
 
hoi Danny

je hebt mijn eerdere post niet gelezen

maar probeer dit eens
Code:
With Sheets(Sheets("naam van blad waar combobox1 staat").ComboBox1.Value)
groet sylvester
 
Beste, ;)

Bedankt voor de reacties allemaal, maar ik heb het ander moeten oplossen.
Het lukte mij niet langs jullie weg.

Heb het volgende gedaan om het te doen werken.

Het tonen van Userform7:

Code:
Sub standtijd_hijskabels()
UserForm7.Show
End Sub

Knop LIJST WEERGEVEN in UserForm7:

Code:
Private Sub CommandButton1_Click()
If ComboBox1.Value = "" Then
Unload Me
Exit Sub
Else: Sheets(ComboBox1.Value).Select
End If
lijst_weergeven
End Sub

Code:
Sub lijst_weergeven()
tst
If ActiveSheet.Range("B3").Value = 0 Then MsgBox "Geen gegevens voorhanden", vbInformation, "Gegevens": Exit Sub
UserForm1.Show
End Sub

Code tst uitvoeren:

Code:
Sub tst()
With ActiveSheet
    For i = 9 To 1745 Step 4
    For Each cl In Range(Cells(i, 17), Cells(i, 23))
        If Not IsError(cl) Then
            If Not cl.Value = "" Then
                sq = sq & cl.Value & "|"
            End If
        End If
    Next cl
    Next i
.[E2000:E2500].ClearContents
.[E2000].Resize(UBound(Split(sq, "|"))) = Application.Transpose(Split(sq, "|"))
End With
End Sub

Knop WEGSCHRIJVEN naar tabblad "lijst standtijd hijskabels" in UserForm1:

Code:
Private Sub CommandButton1_Click()
    t = Timer
    With Sheets("lijst standtijd hijskabels")
        .Range("B5:E" & .Cells(Rows.Count, 2).End(xlUp).Row + 1).ClearContents
        With .[B2:E2]
            .ClearContents
            .Value = "Lijst standtijd hijskabels in " & ActiveSheet.Range("G2")
        End With
    End With
        With Me.ListBox1
        ReDim myArray([B3], 4)
        i = 0
        For lngListLoop = 0 To .ListCount - 1
            If .Selected(lngListLoop) = False Then
                    .Selected(lngListLoop) = True
                    myArray(i, 0) = .List(lngListLoop, 0)
                    myArray(i, 1) = .List(lngListLoop, 1)
                    myArray(i, 2) = .List(lngListLoop, 2)
                    myArray(i, 3) = .List(lngListLoop, 3)
                i = i + 1
                If .Selected(lngListLoop) = True Then .Selected(lngListLoop) = False
            End If
        Next
    End With
    With Sheets("lijst standtijd hijskabels")
        .Range("B5:E" & .Cells(Rows.Count, 2).End(xlUp).Row + 1).Resize([B3], 4) = myArray
    End With
    MsgBox "Weggeschreven in " & vbCrLf & Timer - t & "sec."
End Sub

Zo werkt deze perfect voor mij.

Als jullie toch iets zien dat het beter kan is alle reacties welkom.
Vb: Else: Sheets(ComboBox1.Value).Select
Misschien met Application.GoTo ?

Met dank aan warme bakkertje die mij al een heel eind op weg heeft geholpen :D :thumb:

Groetjes Danny. :thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan