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

Variable probleem

Status
Niet open voor verdere reacties.

shadowbikes

Gebruiker
Lid geworden
1 nov 2006
Berichten
466
Hallo,

Ik probeer een variable te declareren met als beginwaarde 2
Dim rij As Integer
rij.Value = 2


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2")) Is Nothing Then
Cells(rij, 2) = [a2]
rij = rij + 1
End If
End Sub

Wat is er fout?
 
Formuleer liever in helder Nederlands wat je wil.
 
Hoi,

in dit geval moet "rij" als variable dienen met als beginwaarde 2, zodat het in onderstaande code steeds vermeerderd wordt met 1, als er op cel A2 een waarde binnenkomt.
 
Simpel.

Code:
rij = 2

In plaats van met variabelen te werken die de scope hebben van een module, is dit beter:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2")) Is Nothing Then Range("B" & Rows.Count).End(xlUp).Offset(1) = [A2]
End Sub
 
Wigi,

deze code had ik eerst ook, maar het probleem is dat ik op een vaste cel wil beginnen. In dit geval B2. Als er verderop in de kolom wat geschreven staat worden de waardes daar weer onder geschreven, en dat is nou net wat ik niet wil.

Verder ter verduidelijking, ik weet bar weinig van programeren in vba.
Mijn vraag is dan ook waar moet ik rij=2 ergens zetten. Ik had dit onder Algemeen declaratie gezet. maar dan krijg ik steeds een foutmelding.
Zet ik het in onder Private Sub Worksheet_Change(ByVal Target As Range)
dan blijft uiteraard de waarde steeds 2, wat niet de bedoeling is.

grts Rene
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
    If [B2] <> "" Then
        [B2].Offset([B2].CurrentRegion.Rows.Count) = [A2]
    Else
        [B2] = [A2]
    End If
End If
End Sub
 
Allen bedankt,

ik heb 't probleem als volgt opgelost.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2")) Is Nothing Then
Cells([Z1], 2) = [A2]
[Z1] = [Z1] + 1
End If
End Sub
In cell Z1 staat een waarde 2. Telkens als een nieuwe waarde in A2 binnenkomt, wordt de waarde in Z1 verhoogd met 1, zodat het geheel steeds 1 rij lager wordt weggeschreven.
Het voordeel van dit is, dat er niet naar een lege regel wordt gekeken.

m.v.g. Rene
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan