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

verkeerd gedefinieerd

Status
Niet open voor verdere reacties.

elodie

Gebruiker
Lid geworden
18 mei 2010
Berichten
48
Ik krijg een foutmelding: "verkeerd gedefinieerd" op de gekleurde regel, kan iemand mij uitleggen waarom dit is en een oplossing geven?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If (Target.Column = 4 Or Target.Column = 5) And Len(Target) = 1 And Target.Value < 5 And Target.Value >= 1 Then
    Target.Value = Year(Now()) & "-" & Target
ElseIf Left(Target, 4) <> CStr(Year(Now())) Then
    Target.Value = ""

[COLOR="red"]ElseIf Target.Column = 6 And Target.Offset(0, -5) <> "" Then[/COLOR]
    Workbooks.Open "C:\Documents and Settings\evanaken\Desktop\systeem\centraal systeem\database materieel\nieuwe codes materieell.xls" & Worksheets(1).Columns(1).Find(Target.Offset(0, -5).Value, , xlValues, xlWhole).Offset(0, 23).Value
    With Workbooks(Workbooks.Count)
        .Worksheets(1).Columns(1).Find(Target.Offset(0, -5).Value, , xlValues, xlWhole).Offset(0, 23).Value = Target.Value
        .Close Savechanges:=True
    End With

End If
End Sub
 
Ik zou de regel vervangen door:

Code:
ElseIf Target.Column = 6 And Range("A" & Target.Row) <> "" Then

Met vriendelijke groet,


Roncancio
 
Dank je wel voor de (op zen minst) tiende keer dat je me verderhelpt...
 
Ik krijg een foutmelding: "verkeerd gedefinieerd" op de gekleurde regel, kan iemand mij uitleggen waarom dit is en een oplossing geven?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If (Target.Column = 4 Or Target.Column = 5) And Len(Target) = 1 And Target.Value < 5 And Target.Value >= 1 Then
    Target.Value = Year(Now()) & "-" & Target
ElseIf Left(Target, 4) <> CStr(Year(Now())) Then
    Target.Value = ""

[COLOR="red"]ElseIf Target.Column = 6 And Target.Offset(0, -5) <> "" Then[/COLOR]
    Workbooks.Open "C:\Documents and Settings\evanaken\Desktop\systeem\centraal systeem\database materieel\nieuwe codes materieell.xls" & Worksheets(1).Columns(1).Find(Target.Offset(0, -5).Value, , xlValues, xlWhole).Offset(0, 23).Value
    With Workbooks(Workbooks.Count)
        .Worksheets(1).Columns(1).Find(Target.Offset(0, -5).Value, , xlValues, xlWhole).Offset(0, 23).Value = Target.Value
        .Close Savechanges:=True
    End With

End If
End Sub

Is goed dedeclareerd (msoffice 2000). Wellicht ben je onder verwijzing iets vergeten toe te voegen?
 
Laatst bewerkt:
Nu heb ik de wijzingen aangebracht, en nu komt er een zelfde foutmelding op de onderstaande gekleurde regel.Kan jij hier een mouw aan passen?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 4 And Range("E" & Target.Row) <> "" Then
    Workbooks.Open "C:\Documents and Settings\evanaken\Desktop\systeem\centraal systeem\fiches materieel\" & Range("E" & Target.Row).Value
    With Workbooks(Workbooks.Count)
        .Worksheets(1).Range("A14").Value = Target
        .Close Savechanges:=True
    End With
    
ElseIf Target.Column = 13 And ("E" & Target.Row) <> "" Then
    Workbooks.Open "C:\Documents and Settings\evanaken\Desktop\systeem\centraal systeem\VCA database\VCA .xls" & Worksheets(1).Columns(1).Find(Target.Offset(0, -8).Value, , xlValues, xlWhole).Offset(0, 4).Value
    With Workbooks(Workbooks.Count)
        .Worksheets(1).Columns(1).Find(Target.Offset(0, -8).Value, , xlValues, xlWhole).Offset(0, 4).Value = Target.Value
        .Close Savechanges:=True
    End With
    
[COLOR="darkred"]ElseIf Target.Column = 13 And Len(Target) = 1 And Target.Value < 5 And Target.Value >= 1 Then[/COLOR]
    Target.Value = Year(Now()) & "-" & Target
ElseIf Left(Target, 13) <> CStr(Year(Now())) Then
    Target.Value = ""
    
End If
End Sub
 
Is goed dedeclareerd (msoffice 2000). Wellicht ben je onder verwijzing iets vergeten toe te voegen?

Op mij office gaf het continu foutmeldingen, en wanneer ik deze negeerde werkte het wel, maar die foutmeldingen kwamen me de oren uit.met de raad van Roncancio heb ik toch al een groot deel van men probleem opgelost.

Alvast bedank voor de interesse.
 
Je krijgt ook problemen als meerdere cellen tegelijk worden gewijzigd.
Dit kan je oplossen door te laten kijken of maar 1 cel wordt gewijzigd. Dit kan met Count.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
    If Target.Column = 4 And Range("E" & Target.Row).Value <> "" Then
        Workbooks.Open "C:\Documents and Settings\evanaken\Desktop\systeem\centraal systeem\fiches materieel\" & Range("E" & Target.Row).Value
        With Workbooks(Workbooks.Count)
            .Worksheets(1).Range("A14").Value = Target
            .Close Savechanges:=True
        End With
        
    ElseIf Target.Column = 13 And Range("E" & Target.Row).Value <> "" Then
        Workbooks.Open "C:\Documents and Settings\evanaken\Desktop\systeem\centraal systeem\VCA database\VCA .xls" & Worksheets(1).Columns(1).Find(Target.Offset(0, -8).Value, , xlValues, xlWhole).Offset(0, 4).Value
        With Workbooks(Workbooks.Count)
            .Worksheets(1).Columns(1).Find(Target.Offset(0, -8).Value, , xlValues, xlWhole).Offset(0, 4).Value = Target.Value
            .Close Savechanges:=True
        End With
        
    ElseIf Target.Column = 13 And Len(Target.Value) = 1 And Target.Value < 5 And Target.Value >= 1 Then
        Target.Value = Year(Now()) & "-" & Target
    ElseIf Left(Target.Value, 13) <> CStr(Year(Now())) Then
        Target.Value = ""
    End If
End If
End Sub
Ik heb ook nog een fout uit de code gehaald.

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt:
ik heb uw code ingegeven en ik krijg als foutmelding op de gekleurde regel :"objectvariabele with is niet ingesteld"

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
    If Target.Column = 4 And Range("E" & Target.Row).Value <> "" Then
        Workbooks.Open "C:\Documents and Settings\evanaken\Desktop\systeem\centraal systeem\fiches materieel\" & Range("E" & Target.Row).Value
        With Workbooks(Workbooks.Count)
            .Worksheets(1).Range("A14").Value = Target
            .Close Savechanges:=True
        End With
        
    ElseIf Target.Column = 13 And Range("E" & Target.Row).Value <> "" Then
        Workbooks.Open "C:\Documents and Settings\evanaken\Desktop\systeem\centraal systeem\VCA database\VCA .xls" & Worksheets(1).Columns(1).Find(Target.Offset(0, -8).Value, , xlValues, xlWhole).Offset(0, 4).Value
        With Workbooks(Workbooks.Count)
            .Worksheets(1).Columns(1).Find(Target.Offset(0, -8).Value, , xlValues, xlWhole).Offset(0, 4).Value = Target.Value
            .Close Savechanges:=True
        End With
        
    ElseIf Target.Column = 13 And Len(Target.Value) = 1 And Target.Value < 5 And Target.Value >= 1 Then
        Target.Value = Year(Now()) & "-" & Target
    ElseIf Left(Target.Value, 13) <> CStr(Year(Now())) Then
        Target.Value = ""
    End If
End If
End Sub
 
Laatst bewerkt:
Met het Event Calculate kan je code gestart worden als een cel wijzigt door een formule.

Code:
Dim sTAdr As String
Private Sub Worksheet_Calculate()

If (Range(sTAdr).Column = 4 Or Range(sTAdr).Column = 5) And Len(Range(sTAdr).Value) = 1 And Range(sTAdr).Value < 5 And Range(sTAdr).Value >= 1 Then
    Range(sTAdr).Value = Year(Now()) & "-" & Range(sTAdr).Value
ElseIf Left(Range(sTAdr).Value, 4) <> CStr(Year(Now())) Then
    Range(sTAdr).Value = ""

ElseIf Range(sTAdr).Column = 6 And Range("A" & Range(sTAdr).Row).Value <> "" Then
    Workbooks.Open "C:\Documents and Settings\evanaken\Desktop\systeem\centraal systeem\database materieel\nieuwe codes materieell.xls" _
        & Worksheets(1).Columns(1).Find(Range("A" & Range(sTAdr).Row).Value, , xlValues, xlWhole).Offset(0, 23).Value
    With Workbooks(Workbooks.Count)
        .Worksheets(1).Columns(1).Find(Range("A" & Range(sTAdr).Row).Value, , xlValues, xlWhole).Offset(0, 23).Value = Range(sTAdr).Value
        .Close Savechanges:=True
    End With
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
sTAdr = Target.Address

End Sub

Met vriendelijke groet,


Roncancio
 
ik heb u heel dankbaar dat jij me wilt helpen, dus het is helemaal niet slecht bedoeld,
maar sinds ik de code die u heeft gepost heb ingegeven krijg ik als foutmelding op de gekleurde regel :"objectvariabele with is niet ingesteld"


[Code:]
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
If Target.Column = 4 And Range("E" & Target.Row).Value <> "" Then
Workbooks.Open "C:\Documents and Settings\evanaken\Desktop\systeem\centraal systeem\fiches materieel\" & Range("E" & Target.Row).Value
With Workbooks(Workbooks.Count)
.Worksheets(1).Range("A14").Value = Target
.Close Savechanges:=True
End With

ElseIf Target.Column = 13 And Range("E" & Target.Row).Value <> "" Then
Workbooks.Open "C:\Documents and Settings\evanaken\Desktop\systeem\centraal systeem\VCA database\VCA .xls" & Worksheets(1).Columns(1).Find(Target.Offset(0, -8).Value, , xlValues, xlWhole).Offset(0, 4).Value
With Workbooks(Workbooks.Count)
.Worksheets(1).Columns(1).Find(Target.Offset(0, -8).Value, , xlValues, xlWhole).Offset(0, 4).Value = Target.Value
.Close Savechanges:=True
End With

ElseIf Target.Column = 13 And Len(Target.Value) = 1 And Target.Value < 5 And Target.Value >= 1 Then
Target.Value = Year(Now()) & "-" & Target
ElseIf Left(Target.Value, 13) <> CStr(Year(Now())) Then
Target.Value = ""
End If
End If
End Sub[/code]
 
Laatst bewerkt:
Met het Event Calculate kan je code gestart worden als een cel wijzigt door een formule.

Code:
Dim sTAdr As String
Private Sub Worksheet_Calculate()

If (Range(sTAdr).Column = 4 Or Range(sTAdr).Column = 5) And Len(Range(sTAdr).Value) = 1 And Range(sTAdr).Value < 5 And Range(sTAdr).Value >= 1 Then
    Range(sTAdr).Value = Year(Now()) & "-" & Range(sTAdr).Value
ElseIf Left(Range(sTAdr).Value, 4) <> CStr(Year(Now())) Then
    Range(sTAdr).Value = ""

ElseIf Range(sTAdr).Column = 6 And Range("A" & Range(sTAdr).Row).Value <> "" Then
    Workbooks.Open "C:\Documents and Settings\evanaken\Desktop\systeem\centraal systeem\database materieel\nieuwe codes materieell.xls" _
        & Worksheets(1).Columns(1).Find(Range("A" & Range(sTAdr).Row).Value, , xlValues, xlWhole).Offset(0, 23).Value
    With Workbooks(Workbooks.Count)
        .Worksheets(1).Columns(1).Find(Range("A" & Range(sTAdr).Row).Value, , xlValues, xlWhole).Offset(0, 23).Value = Range(sTAdr).Value
        .Close Savechanges:=True
    End With
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
sTAdr = Target.Address

End Sub

Met vriendelijke groet,


Roncancio

ik heb deze ingevoerd en er is geen verandering zichtbaar.
 
In bijgevoegd bestand heb ik de code geplaatst en in de blauwe cellen de formules.

Komt dit in de richting wat je bedoelt?

Met vriendelijke groet,


Roncancio
 

Bijlagen

Code:
Workbooks.Open "C:\Documents and Settings\evanaken\Desktop\systeem\centraal systeem\VCA database\VCA .xls"

Waarom staat er een spatie tussen VCA en .xls?

Met vriendelijke groet,


Roncancio
 
dat is inderdaad wat ik bedoel,maar in dit bestand stuur die ook niet automatisch door wanneer er een waarde verandering optreed in de kolom "F"
 
Laatst bewerkt:
Code:
Workbooks.Open "C:\Documents and Settings\evanaken\Desktop\systeem\centraal systeem\VCA database\VCA .xls"

Waarom staat er een spatie tussen VCA en .xls?

Met vriendelijke groet,


Roncancio

omdat de naam van dit bestand eigenlijk VCA code.XLS noemde, en de spatie is blijven staan , en hiermee is verdergewerkt, dus ben ik verplicht dit door te trekken in alle wijzigingen die ik maak aan dit systeem.
 
Ik zou dan de SET gebruiken om de naam van een bestand te retourneren.
Zoiets als:
Code:
SET Bestand = Worksheets(1).Columns(1).Find(Target.Offset(0, -8).Value, , xlValues, xlWhole).Offset(0, 4).Value
If not Bestand is Nothing Then
...

Met vriendelijke groet,


Roncancio
 
omdat de naam van dit bestand eigenlijk VCA code.XLS noemde, en de spatie is blijven staan , en hiermee is verdergewerkt, dus ben ik verplicht dit door te trekken in alle wijzigingen die ik maak aan dit systeem.

Klop het dan wel dat daar ook een XLS staat aangezien je achter de XLS nog het resultaat zet van de zoekfunctie?

Met vriendelijke groet,


Roncancio
 
dat ga ik volledig aan u laten, want daar ben ik niet zeker van.
zou het probleem opgelost zijn door de .xls weg te laten?
 
Laatst bewerkt:
Ik zou dan de SET gebruiken om de naam van een bestand te retourneren.
Zoiets als:
Code:
SET Bestand = Worksheets(1).Columns(1).Find(Target.Offset(0, -8).Value, , xlValues, xlWhole).Offset(0, 4).Value
If not Bestand is Nothing Then
...

Met vriendelijke groet,


Roncancio

hier kan ik u even niet volgen...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan