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

on change

Status
Niet open voor verdere reacties.

nobody11

Gebruiker
Lid geworden
20 dec 2007
Berichten
552
Ik heb een sub code, en ik zou graag nu ook een onchange event willen hebben die voor mijn sub start telkens er een bepaalde cel verandert..
ik heb in cel D1 een keuzelijst (in excel gemaakt), waar de gebruikerk n kiezen Nederlands of Engels.. als hij deze dus verandert, zou er een onchange event moeten komen.. dit lukt me helaas niet... hij doet niets als ik de keuzelijst aanpas..

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim taal As Variant
taal = Range("D1").Value

    If Target = Range("D1").Value _
    Then
     
Range("F1").Value = IIf(taal = "English", "tekstengels", "tekst nederlands")
....
Range("F13").Value = IIf(taal = "English", "tekst engels", "tekst nederlands")    
        
        
     End If
    
End Sub
 
Laatst bewerkt:
Ik heb een sub code, en ik zou graag nu ook een onchange event willen hebben die voor mijn sub start telkens er een bepaalde cel verandert..
ik heb in cel D1 een keuzelijst (in excel gemaakt), waar de gebruikerk n kiezen Nederlands of Engels.. als hij deze dus verandert, zou er een onchange event moeten komen.. dit lukt me helaas niet... hij doet niets als ik de keuzelijst aanpas..

Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim taal As Variant
taal = Range("D1").Value

    If Target = Range("D1").Value _
    Then
     
Range("F1").Value = IIf(taal = "English", "tekstengels", "tekst nederlands")
....
Range("F13").Value = IIf(taal = "English", "tekst engels", "tekst nederlands")    
        
        
     End If
    
End Sub

is het mss omdat een onchange event niet met een voorwaarde kan gekoopeld worden aan wat het resultaat van die "onchange" gelijk moet zijn?
 
Laatst bewerkt:
is het mss omdat een onchange event niet met een voorwaarde kan gekoopeld worden aan wat het resultaat van die "onchange" gelijk moet zijn?

Ik heb het probleem al gelocaliseerd.. maar kan het nog niet oplossen hehe :)


de range("D1") is de keuzelijst waaruit de gebruiker de taal kan kiezen,m aar excel herkent dit niet als een "onchange", je moet op enter duwen opdat het een onchange event is.. hoe kan ik dit omzeilen?

Tx!
 
Is dit een keuzelijst via Data > Valideren > Lijst?
 
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim taal As Variant
 If Target.Address = [D1].Address _
    Then
taal = [D1].Value
[F1].Value = IIf(taal = "English", "tekstengels", "tekst nederlands")

[F13].Value = IIf(taal = "English", "tekst engels", "tekst nederlands")
        
        
     End If
    
End Sub

Mvg

Rudi
 
tx , ik heb nog een nieuw vraagje :)

in dezelfde worksheet wil ik volgende code plaatsen:

Code:
Sub Worksheet_Change1(ByVal Target1 As Excel.Range)

Dim doelcel As Variant
Dim p As Variant

 If Target1.Address = [G8].Address _
    Then
doelcel = [G8].Value
p = [G2].Value

Select Case Range("G8").Value
Case Is < p * 12

Case Is >= p * 12
MsgBox IIf(taal = "Nederlands", "nederlandse tekst", "engelse tekst")

Exit Sub

End Select

        
       
End If
    
End Sub
telkens als cel G8 gewijzigd wordt, meot nagekeken worden of die niet groter is dan 12 * p, zoja,dan moet er een errormessage komen.. hoe moet ik dit doen?
 
tx , ik heb nog een nieuw vraagje :)

in dezelfde worksheet wil ik volgende code plaatsen:

Code:
Sub Worksheet_Change1(ByVal Target1 As Excel.Range)

Dim doelcel As Variant
Dim p As Variant

 If Target1.Address = [G8].Address _
    Then
doelcel = [G8].Value
p = [G2].Value

Select Case Range("G8").Value
Case Is < p * 12

Case Is >= p * 12
MsgBox IIf(taal = "Nederlands", "nederlandse tekst", "engelse tekst")

Exit Sub

End Select

        
       
End If
    
End Sub
telkens als cel G8 gewijzigd wordt, meot nagekeken worden of die niet groter is dan 12 * p, zoja,dan moet er een errormessage komen.. hoe moet ik dit doen?

ik heb in dezelfde worksheet nl al een andere onchange event code (die van warme bakkertje), en dan krijg ik als error:

Ambiguous name detected: Worksheet_Change

vandaar dat ik er overal een 1 achter gezet heb.. mr dat lijkt niet te lukken :)
 
Laatst bewerkt:
De code van WarmBakkertje kan wat korter.
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Address = [D1].Address Then [F1,F13].Value = IIf([D1].Value = "English", "tekst engels", "tekst nederlands")
    
End Sub

@Nobody
Je kunt inderdaad geen meerdere Worksheet_Change in 1 module hebben.
Worksheet_Change is een vaste naam van een event dus Worksheet_Change1, oid kent VBA dus niet.
Een event is een gebeurtenis in (dit geval) een werkblad.
Met meerdere Worksheet_Change weet de computer dus niet welke gebruikt moet worden.

Hoe dit op te lossen?
De code moet dus samengevoegd in 1 Worksheet_Change.

Met vriendelijke groet,


Roncancio
 
De code van WarmBakkertje kan wat korter.
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Address = [D1].Address Then [F1,F13].Value = IIf([D1].Value = "English", "tekst engels", "tekst nederlands")
    
End Sub

@Nobody
Je kunt inderdaad geen meerdere Worksheet_Change in 1 module hebben.
Worksheet_Change is een vaste naam van een event dus Worksheet_Change1, oid kent VBA dus niet.
Een event is een gebeurtenis in (dit geval) een werkblad.
Met meerdere Worksheet_Change weet de computer dus niet welke gebruikt moet worden.

Hoe dit op te lossen?
De code moet dus samengevoegd in 1 Worksheet_Change.

Met vriendelijke groet,


Roncancio
£

Roncancio, bedankt voor je uitleg! ik heb het inderdaad kunnen samenvoegen!

tx iedereen voor de hulp!!
 
Je code en de code van WarmBakkertje kan worden samengevoegd tot:

Code:
Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = [D1].Address Then [F1,F13].Value = IIf([D1].Value = "English", "tekst engels", "tekst nederlands")
If Target.Address = [G8].Address And [G8].Value >= [G2].Value * 12 Then MsgBox IIf([D1].Value = "Nederlands", "nederlandse tekst", "engelse tekst")
    
End Sub

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan