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

gegevens wegschrijven en sheet bijmaken

Status
Niet open voor verdere reacties.

bowlingman

Gebruiker
Lid geworden
17 okt 2007
Berichten
433
Hallo Bollebozen,
Aan de hand van een frm probeer ik de namen van de leden weg te schrijven naar kolom D in mijn sheet LigaDataBase met de volgende code
Code:
Private Sub CommandButton1_Click()
Dim c As Range, i As Integer, ctrl As Control
    Set c = Sheets("LigaDataBase").Columns(4).Find(what:=cboLedeniD.Value, lookat:=xlWhole)
    For i = 1 To 1
        c.Offset(0, i) = Me("TextBox & i" + 3).Text
    Next
End Sub
maar krijg steeds de foutmelding "Typen komen niet overeen"
en de bedoeling is dus (als dit mogelijk is) om dan wanneer de namen worden weggeschreven, telkens de sheet (hier voorlopig "Test") wordt gekopieerd en toegevoegd maar dat deze sheet dan het respectievelijk iD-nummer (uit kolom C) krijgt en dit nummer ook in cel K1 komt te staan
Hierbij een testje waaruit alles misschien een beetje duidelijker wordt.

Grtjs.
Armand
 

Bijlagen

Ik neem aan dat dit een voorbeeldje is van een for next heeft geen nut als het maar om 1 waarde gaat,
heb je in de gaten dat textbox4 niet bestaat?

De melding komt omdat er een " op de verkeerde plaats staat deze moet meteen achter het woord textbox komen.

Code:
Private Sub CommandButton1_Click()
Dim c As Range, i As Integer, ctrl As Control
    Set c = Sheets("LigaDataBase").Columns(4).Find(what:=cboLedeniD.Value, lookat:=xlWhole)
    For i = 1 To 1
        c.Offset(0, i) = Me("TextBox[COLOR="#FF0000"]"[/COLOR] & i + 3).Text
    Next
End Sub

Niels
 
Hallo Niels,

Ik heb de code aangepast
Code:
Private Sub CommandButton1_Click()
Dim c As Range, i As Integer, ctrl As Control
    Set c = Sheets("LigaDataBase").Columns(4).Find(what:=cboLedeniD.Value, lookat:=xlWhole)
    For i = 1 To 1
        c.Offset(0, i) = Me("TextBox" & i).Text
    Next
End Sub
en krijg nu op de regel "c.Offset" de foutmelding "Objectvariabele of Blokvariabele With is niet ingesteld"

Grtjs.
Armand
 
Had de vorige keer jouw code niet getest.
Hierbij een die wel werkt


Code:
Private Sub CommandButton1_Click()
Dim c As Range
Dim i As Integer
    Set c = Sheets("LigaDataBase").Columns(3).Find(what:=cboLedeniD.Value, lookat:=xlWhole)
    For i = 1 To 1
        c.Offset(0, i) = me("TextBox" & i).Text
    Next
End Sub

Punten:
1. als je variabelen declareert doe het dan goed, Dim voor elke variabele en alleen van deze soort op 1 lijn
2. als je ze niet declareert zet dan option explicit uit
3. Je zocht niet in de juiste kolom.


Niels
 
Hallo Niels,
Bedankt voor je hulp, heb de code aangepast en uitgebreid en alles wordt nu netjes en op de juiste plek weggeschreven.
Nu zit ik dus nog met het probleem van het automatisch aanmaken van de sheets.
Momenteel heb ik in de sheet "LigaDataBase" de volgende code
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If Target.Column = 4 Then
        Sheets.Add(after:=Sheets(Sheets.Count)).Name = Target
        End If
    End With
End Sub
en telkens wanneer er in de LigaDataBase een Spelersnaam wordt toegevoegd, wordt er ook een sheet aangemaakt met de naam die is ingevoerd.
De bedoeling is eigenlijk dat de sheet "Test" wordt gekopieerd en dan automatisch het iDnr krijgt van de betreffende speler en er dan ook in cel K1 ditzelfde nummer komt te staan.
Ook als ik een naam handmatig terug verwijder krijg ik op de regel "Sheets.Add.........." de foutmelding "Door de toepassing of door object gedefinieerde fout" en wordt er een sheet toegevoegd

Ik voeg de bijgewerkte file toe

Grtjs.
Armand
 

Bijlagen

Laatst bewerkt:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target = "" Then Exit Sub
        If Target.Column = 4 Then
            Sheets("Test").Copy , Sheets(Sheets.Count)
            With ActiveSheet
                .Name = Target.Offset(, -1).Value
                .Range("K1") = Target.Offset(, -1).Value
            End With
        End If
End Sub
 
Wow, super Rudi
Werkt Perfect.
Rudy en Niels en alle andere meedenkers, bedankt. Kan nu weer een stapje verder en ben ook weeral een stukje wijzer geworden.

Grtjs.
Armand
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan