VBA en formules in Excel

Status
Niet open voor verdere reacties.

Rose34

Gebruiker
Lid geworden
11 jan 2016
Berichten
8
Goedemiddag,

Ik heb een excel bestand aangemaakt waarbij er via VBA een herinnering voor facturatie wordt aangemaakt in Outlook. Ik ben hiermee nog extra geholpen door Alphamax en dit werkt nu goed. Alleen nu het volgende:

Ik heb nu extra sheets hierin aangemaakt voor de volgende jaren en heb hierin een deel geautomatiseerd met formules, maar nu komt er volgens mij een conflict tussen de formules en VBA. Er komt een foutmelding: "Fout 13 tijdens uitvoering: typen komen niet met elkaar overeen" en dit gebeurt bij het exporteren van de de data naar outlook in sheet 2 en 3 (sheet gaat wel goed)

De volgende formules heb ik toegepast:
=ALS('Datum toekenning_1e verlenging'!I3="Ja"; 'Datum toekenning_1e verlenging'!A3; "") ---> bij 2e en 3e sheet de eerste 4 velden (A t/m D)
=ALS('Datum toekenning_1e verlenging'!I3="Ja"; ZELFDE.DAG(D3;24);" ") ---> bij 2e en 3e sheet het 5e veld (E)
=ALS(D3<>""; WAAR; "") ---> in alle 3 de sheets het 6e veld (F)

Ik hoop dat iemand mij hiermee verder kan helpen!

Bijgevoegd: een printscreen van de foutmelding en mijn bestand.

Groet,
Rozemarijn
 

Bijlagen

  • prntscrn_VBA foutmelding code 13.png
    prntscrn_VBA foutmelding code 13.png
    94,7 KB · Weergaven: 60
  • Excel_To_Outlook_Taken_ test keurmerk 5 Helpmij.xls
    771 KB · Weergaven: 31
Laatst bewerkt:
Kijk in Debug mode wat op dat moment de waarde van de onderhanden cel is. Als het een waarde is die niet door CBool geconverteerd kan worden krijg je inderdaad die fout 13. Wijzig daarom ook dit:
=ALS(D3<>""; WAAR; "")

In:
=ALS(D3<>"";WAAR;FALSE)

Of:
=ALS(D3<>"";1;0)
 
Laatst bewerkt:
Dat levert ook een echte True of False op inderdaad :)
 
Bedankt voor jullie reacties. Ik heb het nu veranderd in: =D3=""

Ik heb niet zoveel verstand van VBA, dus ben erg blij met jullie hulp! Ik loop nu tegen het volgende aan: wederom een foutmelding 13 bij Startdate:

With Worksheets(4)
For lngRow = 3 To .Range("A" & .Rows.Count).End(xlUp).Row
If Cells(lngRow, 8).Value = vbNullString Then
Set objTask = objOutlook.CreateItem(3)
With objTask
.Subject = CStr(Cells(lngRow, 2).Value)
.StartDate = CDate(Cells(lngRow, 4).Value)

Ik heb op die regel in de sheet de volgende formule toegepast:
=ALS('Datum toekenning_1e verlenging'!I3="Ja"; 'Datum toekenning_1e verlenging'!D3; "")

Ik wil namelijk dat de datum moet worden overgenomen als er Ja staat in de vorige sheet en anders wil ik dat het veld leeg blijft... moet ik dit ook anders invullen dan?

Groet,
Rozemarijn
 
Als Cells(lngRow, 4).Value al een echte datumwaarde is zal CDate daar een probleem mee hebben.
Maak van dit:
.StartDate = CDate(Cells(lngRow, 4).Value)

Eens dit:
.StartDate = Cells(lngRow, 4).Value
 
Laatst bewerkt:
.StartDate = Cells(lngRow, 4).Value

Goedemiddag Edmoor,

Dank je wel voor je reactie! Ik heb het geprobeerd, maar hij komt nu met een andere foutmelding:

"De typen komen niet overeen: kan de parameterwaarde niet forceren. Kan de tekenreeks niet converteren."

Groet,
Rozemarijn
 
Vandaar dat ik het heb over een echte datumwaarde of niet. Plaats dus een voorbeeld document.
 
In dat document kom ik nergens die With Worksheets(4) tegen waar je het in #1 over hebt.
Verder het advies om in de code der werkbladnamen te gebruiken en niet de numers.
Dat zal nu de verwarring met zich meebrengen en kan ik niet makkelijk zien wat je in #1 bedoeld.
 
Worksheet 4

Hoi Edmoor,

Worksheet 4 mag je even vergeten, ik heb n nieuw testdocument aangemaakt.

Waar het omgaat is sheet 2, "Datum 2e verlenging" (de 3e sheet zal ik ook op die manier willen opmaken). Als ik daar nu klik op "Exporteer naar outlook tasks", dan komt de laatst genoemde foutmelding.

Wat je tip betreft: moet ik dan de tabblad naam invullen in plaats van wat er tussen haakjes staat achter with worksheets?

Groetjes,
Rozemarijn
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan