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

#WAARDE! fout bij gebruik function in VBA

Status
Niet open voor verdere reacties.

WimenBeer

Verenigingslid
Lid geworden
12 sep 2008
Berichten
808
Ik heb een module in VBA geschreven die de actergrond kleur van de cel rood kleurt indien een bepaald bestand voorkomt.

Function wkstaat(mw, w, m, j, r, k)

'mw, w, m, j, r, k zijn waarde uit de sheet

Dim naam As String
Dim weekst As String

naam = "L:\Urenstaten Ordina\" & mw & w & m & j & ".*"
weekst = Dir(naam)

If weekst <> "" Then
MsgBox naam & " " & weekst
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Else
End If

End Function

Echter in de cel waar ik deze functie aanroep komt altijd #WAARDE! te staan.
Dit gebeurt alleen als ik de 'With' laat uitvoeren, anders staat er 0 in de cel.

Heeft iemand een idee waarom dit gebeurt?

Wim
 
Ik heb een module in VBA geschreven die de actergrond kleur van de cel rood kleurt indien een bepaald bestand voorkomt.

Function wkstaat(mw, w, m, j, r, k)

'mw, w, m, j, r, k zijn waarde uit de sheet

Dim naam As String
Dim weekst As String

naam = "L:\Urenstaten Ordina\" & mw & w & m & j & ".*"
weekst = Dir(naam)

If weekst <> "" Then
MsgBox naam & " " & weekst
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Else
End If

End Function

Echter in de cel waar ik deze functie aanroep komt altijd #WAARDE! te staan.
Dit gebeurt alleen als ik de 'With' laat uitvoeren, anders staat er 0 in de cel.

Heeft iemand een idee waarom dit gebeurt?

Wim

Er is niets geselecteerd dus verschijnt de foutmelding.
Ook zie ik dat mw, w, m, j, r, k niet gedeclareerd zijn. Ook de functie is niet gedeclareerd.

Met vriendelijke groet,


Roncancio
 
Bedankt voor je snelle antwoord, maar wat bedoel je met 'er is niets geselecteerd'?
Het enige wat ik doorgeef aan de functie zijn waarden uit de sheet en wil de cel van waaruit ik de funcite aanroep 'rood' kleuren.

Graag nog even een beetje uitleg
 
Variabelen die je gebruikt kan je beter declareren, dus als String, Integer, Long, ...
 
Bedankt voor je snelle antwoord, maar wat bedoel je met 'er is niets geselecteerd'?
Het enige wat ik doorgeef aan de functie zijn waarden uit de sheet en wil de cel van waaruit ik de funcite aanroep 'rood' kleuren.

Graag nog even een beetje uitleg

In de code staat
With Selection.Interior

Ervoor zou je dan een cel moeten selecteren. Bijv.: Range("A1").Select.
Beter is om helemaal geen Select te gebruiken in de code.
Dus zo iets:
With ActiveCell.Interior

Verder sluit ik mij aan bij de opmerking van Wigi dat variabelen gedeclareerd behoren te worden.

Met vriendelijke groet,


Roncancio
 
Ik heb de functie nu als volgt aangepast maar krijg nog steeds #WAARDE! in mij cel terug.
De functie werkt verder perfect.

Function wkstaat(mw As String, w As String, m As String, j As String, r As Integer, k As Integer)

Dim naam As String
Dim weekst As String

naam = "L:\Urenstaten Ordina\" & mw & w & m & j & ".*"
weekst = Dir(naam)

If weekst <> "" Then
With ActiveCell.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Else
End If

End Function


Hoe krijg ik nu alleen nog deze foutwaarde weg uit mijn cel.

Graag hulp
 
De aktie die je uitvoert hoort bij een sub en niet bij een funktie.
Je geeft nl. geen waarde aan de funktie wkstaat, vandaar de #Waarde!#.
Je geeft overbodige argumenten door: r en k
Omdat het over medewerker, week, maand en jaar gaat lijkt me handiger dat argument van tevoren al te integreren

bijv.
Code:
Sub aanroep()
  wkstaat mw & w & m & j
End Sub

Het onderstaande volstaat dan

Code:
Sub wkstaat(c0 )
  If dir("L:\Urenstaten Ordina\" & c0 & ".*") <> "" Then
    With ActiveCell.Interior
      .Pattern = xlSolid
      .PatternColorIndex = xlAutomatic
      .Color = 255
      .TintAndShade = 0
      .PatternTintAndShade = 0
    End With
  End If
End Sub

Het wel of niet goed funktioneren van code heeft niets met het declareren van variabelen te maken.
 
Een functie je in een cel plaatst, kan enkel iets "berekenen", geen wijzingingen doorvoeren in Excel (ergens opmaak toepassen bvb.)
 
Sorry voor de late reactie op jullie hulp, maar de oplossing is gevonden en werkt.

Code:
Dim ControleInd As String
Function startwk(mw As String, w As String, m As String, j As String)
    wkstaat mw & j & m & w
    startwk = ControleInd
End Function
Sub wkstaat(c0)
    If Dir("\\Sadnl\dfsnl\GRNL00\0164\Beheer\PIT\Urenstaten Ordina\" & c0 & ".*") <> "" Then
        ControleInd = "X"
        Ophalen_Uren (c0)
    Else
        ControleInd = ""
    End If
End Sub

De kleur van de cel wordt nu met 'voorwaardelijk opmaak' geregeld. Als er een "X" in de cel staat dan kleurt hij rood. Simpler en makkelijker.

Dus deze vraag van mijn kan worden gesloten. Ik weet niet wie dat doet. Moet ik dat zelf doen of doen jullie dat
 
Dus deze vraag van mijn kan worden gesloten. Ik weet niet wie dat doet. Moet ik dat zelf doen of doen jullie dat
Dan kunnen wij niet doen.
Onderaan de vraag staat een knop om de vraag op opgelost te zetten.

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan