Ga naar inhoud

range uitbreiden vba code


romilied

Aanbevolen berichten

Hallo

 

ik heb een vraag waar ik maar niet uit komt.

 

ik heb een code gevonden waar je een getal plus of min invoert en en dat het in een andere cel

het getal erbij komt of er af gaat.

dit werkt prima, alleen krijg ik het niet voor elkaar om dit voor de hele kolom te doen.

 

De eerste macro moet in de werkblad-code
de tweede in ThisWorkbook
 
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("Blad1").Range("G4").ClearContents
End Sub
 
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("G4")) Is Nothing Then
  Range("F4") = Range("F4") + Range("G4")
   Range("G4").ClearContents
End If
End Sub
 
ik zou dit bv willen uitbreiden van F4 t/m F1000
en G4 t/m G1000.
 
ik had eerst de code heel veel keer gkopieerd maar dan krijg je een fout melding.
 
alvast hartelijk bedankt voor uw reacties
Romilied

 

Link naar reactie
Delen op andere sites

zonder te testen op een voorbeeld van jou, verander deze code eens

 

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("F4:G1000")) Is Nothing Then
 Application.EnableEvents = False
  Target.Value = Target.Value + Target.Offset(0, 1).Value
   Target.Offset(0, 1).ClearContents
   Application.EnableEvents = True
End If
End Sub
 

Link naar reactie
Delen op andere sites

Hallo JeanPaul,

 

allereerst bedankt voor je reactie,

 

ik krijg hier een fout melding op, maar ik heb een ander stukje code gevonden die wel werkt.

heb hier alleen de letters veranderd en hij werkt.

 

ik weet niet precies hoe die opgebouwd is maar hij doet wat ik wilt  :top:

 

 

 

 

Private Sub Worksheet_Change(ByVal Target As Range)
 
Dim tr As Integer
'hier telt hij de waarde van B en C op en maakt B terug leeg
 
    If Not Intersect(Range("G2:G" & Range("A" & Rows.Count).End(xlUp).Row), Target) Is Nothing Then
        tr = Target.Row
        Range("F" & tr).Value = Range("F" & tr).Value + Range("G" & tr).Value
        Target.ClearContents
    End If
      
 ' datum laatste aanpassing in D zetten
   Application.EnableEvents = False
    With Target
      If .Column = 3 And Not Target.Address(0, 0) = "G1" And Not IsEmpty(Target) Then
        .Offset(, 1) = Date
      
      End If
    End With
  Application.EnableEvents = True
    
 
 
  End Sub
 
 
 
nogmaals bedankt voor je moeite
Romilied
Link naar reactie
Delen op andere sites

De 'beforeclose'-macro heb je niet nodig, je kunt volstaan met deze macro, behorend bij het blad waarin je de code wil gebruiken. Hierbij is ervan uitgegaan dat er in kolom G een getal wordt ingevoerd en dat dat wordt opgeteld bij de overeenkomstige cel in kolom F. Ik ben overigens zelf geen voorstander van het gebruik van zo'n macro. Je kunt na invoer niet meer nagaan wat je hebt ingevoerd en dus ook niet nagaan wat er mogelijk fout is ingevoerd.


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G4:G1000")) Is Nothing Then
With Target
.Offset(, -1).Value = .Offset(, -1).Value + Target.Value
.ClearContents
End With
End If
End Sub
aangepast door alpha
Link naar reactie
Delen op andere sites

×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.