hfoppen
Terugkerende gebruiker
- Lid geworden
- 15 nov 2000
- Berichten
- 1.058
Beste mensen,
ik heb een Excelfile met een invoegtoepassing waarbij ik gegevens uit ons ERP-systeem binnenhaal. Hierin kunnen gegevens worden aangepast waarbij deze vervolgens 'met een druk op de knop' weer kunnen worden teruggeschreven.
Omdat het soms om 20000 regels gaat die worden ingelezen wil ik ervoor zorgen dat bij het terugschrijven enkel de gewijzigde regels worden gelezen om bij te werken.
Wat ik heb gedaan is een kolom "BQ" gereserveerd voor 'changed'. Onder de code van Blad1 heb ik de volgende code:
Zoals je kunt zien heb ik 2 kolommen die in aanmerking komen voor wijzigingen. Eigenlijk ook nog een 3e kolom, maar die heb ik niet in deze versie staan.
Kortom: in kolommen E, M & N staat een waarde. Als die wordt aangepast moet in kolom BQ een 'x' komen te staan.
Huidige problemen:
- Niet altijd wordt dit getriggerd, dus niet altijd komt er een 'x' te staan
- Bovenstaande code werkt niet met 'slepen'. Je moet echt een enter geven om ervoor te zorgen dat code wordt geactiveerd.
Wie heeft er de oplossing voor mijn proble(e)m(en)?
Herbert
ik heb een Excelfile met een invoegtoepassing waarbij ik gegevens uit ons ERP-systeem binnenhaal. Hierin kunnen gegevens worden aangepast waarbij deze vervolgens 'met een druk op de knop' weer kunnen worden teruggeschreven.
Omdat het soms om 20000 regels gaat die worden ingelezen wil ik ervoor zorgen dat bij het terugschrijven enkel de gewijzigde regels worden gelezen om bij te werken.
Wat ik heb gedaan is een kolom "BQ" gereserveerd voor 'changed'. Onder de code van Blad1 heb ik de volgende code:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Do nothing if more than one cell is changed or content deleted
If IsEmpty(Target) Then Exit Sub
If Not Intersect(Target, Range("M3:M2500")) Is Nothing Then
'Ensure target is a number before multiplying by 2
' If IsNumeric(Target) Then
'Stop any possible runtime errors and halting code
On Error Resume Next
Range("BQ" & ActiveCell.Row - 1).Value = "x"
'Turn events back on
Application.EnableEvents = True
'Allow run time errors again
On Error GoTo 0
'End If
End If
If Not Intersect(Target, Range("E3:E2500")) Is Nothing Then
'Ensure target is a number before multiplying by 2
' If IsNumeric(Target) Then
'Stop any possible runtime errors and halting code
On Error Resume Next
Range("BQ" & ActiveCell.Row - 1).Value = "x"
'Turn events back on
Application.EnableEvents = True
'Allow run time errors again
On Error GoTo 0
'End If
End If
End Sub
Zoals je kunt zien heb ik 2 kolommen die in aanmerking komen voor wijzigingen. Eigenlijk ook nog een 3e kolom, maar die heb ik niet in deze versie staan.
Kortom: in kolommen E, M & N staat een waarde. Als die wordt aangepast moet in kolom BQ een 'x' komen te staan.
Huidige problemen:
- Niet altijd wordt dit getriggerd, dus niet altijd komt er een 'x' te staan
- Bovenstaande code werkt niet met 'slepen'. Je moet echt een enter geven om ervoor te zorgen dat code wordt geactiveerd.
Wie heeft er de oplossing voor mijn proble(e)m(en)?
Herbert