Vraag


Acties:
  • 0 Henk 'm!

  • Kokimo
  • Registratie: December 2016
  • Laatst online: 04-01-2022
Mijn vraag

Ik ben bezig met het programmeren van een urenlijst. Alleen ik kom niet uit de laatste controle die ik wil uitvoeren.

Tabblad A:
hier wordt de datum, begintijd en eindtijd ingevoerd
Als je drukt op de knop uren overnemen worden deze toegevoegd aan tabblad B
Tabblad B:
hier wordt alles naartoe geschreven.

Nu wil ik als controle dat als op de knop "uren overnemen" wordt gedrukt, er wordt gekeken (per regel) of de combinatie datum en begintijd al bestaat.
Dit kunnen dus meerdere regels zijn.

Indien dit bestaat moet er een melding komen, met welke regels reeds bestaan en de vraag of je de dag wilt overschrijven. Zo ja, moeten alle bestaande regels van die datum worden verwijderd van tabblad B, waarna kan worden doorgegaan met de overnemen functie

Zo nee, dan kunnen er gegevens worden aangepast en moet de controle opnieuw worden aangeroepen.

...

Relevante software en hardware die ik gebruik

Excel 2016
...

Wat ik al gevonden of geprobeerd heb

Ik probeerde een controle te bouwen die een waarde teruggaf in een cel... maar loop zelfs daar al vast....

Hopelijk zijn er hier mensen die dit beter en sneller kunnen dan ik..... VBA en programmeren is lang geleden, dus ben al heel blij dat ik zover ben gekomen.
...

Alle reacties


Acties:
  • 0 Henk 'm!

  • Kokimo
  • Registratie: December 2016
  • Laatst online: 04-01-2022
Ik heb tot dusver het volgende:
dim Datumrij As Range, Zoekdatum As Date

Datumcontrole:
ZoekDatum = [C5].Value 'onthoud de datum in C5
Sheets("Ovz").Select 'ga naar het andere blad
Set DatumRij = Range("A1:A10000").Find(What:=ZoekDatum, LookAt:=x1Whole) 'Zoek deze datum in kolom A
If Not DatumRij Is Nothing Then
MsgBox ("Er zijn al uren geboekt voor deze datum")
End
End If
'checken of er al uren zijn geschreven voor deze datum
Aantal = Application.CountA(DatumRij.Offset(0, 0).Range("A1:B1")).Select
If Aantal > 0 Then
If MsgBox("Er zijn al uren voor deze dag ingevoerd." & vbCrLf & "Wilt u deze regels toevoegen?", vbYesNo + vbQuestion, "Datum is al ingevoerd") = vbNo Then
GoTo Afronden 'als er nee wordt gezegd, ga naar Afronden
End If
End If


Maar ik krijg op deze regel:
Set DatumRij = Range("A1:A10000").Find(What:=ZoekDatum, LookAt:=x1Whole) 'Zoek deze datum in kolom A
de foutmelding: Fout 9: Subscript valt buiten bereik.

Acties:
  • 0 Henk 'm!

  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 23:24

Reinier

\o/

x1Whole moet xlWhole zijn denk ik.

Acties:
  • 0 Henk 'm!

  • Kokimo
  • Registratie: December 2016
  • Laatst online: 04-01-2022
Thanks Reinier! dat lost al 1 probleem op

Maar nu het volgende:

Aantal = Application.WorksheetFunction.CountA(DatumRij.Offset(0, 1).Range("A1:B1")).Select
Zo krijg ik de melding: Compileerfout ongeldige kwalificatie

en als ik het verander naar:
Aantal = Application.CountA(DatumRij.Offset(0, 1).Range("A1:B1")).Select
Krijg ik de melding: Objectvariabele of blokvariabele with niet ingesteld

Acties:
  • +1 Henk 'm!

  • Kokimo
  • Registratie: December 2016
  • Laatst online: 04-01-2022
Uiteindelijk als volgt opgelost:

Datumcontrole:
ZoekDatum = [C5].Value
Search = ZoekDatum
Set foundcell = Worksheets("Ovz").Range("a23:a10000").Find(Search, LookIn:=xlValues, lookat:=xlWhole)
If foundcell Is Nothing Then GoTo Urenkopie
If MsgBox("Er zijn voor deze datum al uren geboekt." & vbCrLf & "Wilt u deze regels toevoegen?", vbYesNo + vbQuestion, "Datum is al ingevoerd") = vbNo Then
GoTo Afronden 'als er nee wordt gezegd, ga naar Afronden
End If