Week bepalen VBA Excel IF...THEN

Status
Niet open voor verdere reacties.

alexanderinfo

Gebruiker
Lid geworden
24 mrt 2008
Berichten
95
Beste experts,

Ik zit met het volgende probleem:

Ik zoek een code om binnen Excel (VBA) de week te bepalen en van daaruit een opdracht geven.

In Word gebruik ik de volgende code om de dag van de week te bepalen en van daaruit een opdracht te geven:
Code:
Dim WeekDag
WeekDag = Weekday(txtMyDate, vbMonday) 'dag van de week

If WeekDag = 1 Then 'maandag
txtDatumRc = Format(DateAdd("d", 3, txtMyDate.Value), "dd mmmm yyyy")
End If

Ik zoek voor Excel een beetje hetzelfde, maar dan niet de dag in de week, maar de week in het jaar.
Ik heb namelijk 52 Excel bestanden en die representeren elke week van het jaar.
Daarbij heb ik een macroknop in het werkblad die bij gebruik het bestand opent die refereert naar de huidige week.
Als ik dus vandaag de macroknop zou gebruiken, zou bestand week 16 openen.

De huidige code die ik in Excel gebruik om het bestand te openen is:
Code:
Private Sub cmdFax12_Click()
Dim wb As Workbook

Set wb = Workbooks.Open("K:\\Weeklijsten 2012/weeklijst week 1.xls")
 
Code:
Function IsoWeek(d1)
  IsoWeek = Format(d1, "ww", 2) - IIf(Format("04-01-" & Year(d1), "ww", 2) = 2, 1, 0)
  If IsoWeek = 0 Then IsoWeek = 53
End Function

Dim wb As Workbook
Set wb = Workbooks.Open("K:\\Weeklijsten 2012/weeklijst week " & IsoWeek(Date) & ".xls")
Plaats de functie in een standaardmodule.
 
Code:
Public Function ISOweeknum(ByVal Datum As Date) As Integer
  ISOweeknum = DatePart("ww", Datum - Weekday(Datum, 2)+4, 2, 2)
End Function
 
Ik heb een aantal knoppen in een werkblad geplaatst om het gebruik van bepaalde formulieren te centraliseren (zie afbeelding).
Ik heb voor deze oplossing gekozen, omdat we primair met dit exceldocument werken en daarnaast veel verschillende formulieren raadplegen die op veel verschillende plaatsen zijn opgeslagen.

De laatste knop op de afbeelding is de betreffende knop waaraan de bovengenoemde macro gekoppeld moet worden.
Zodra ik bovenstaande code gebruik, blijft het systeem vragen om een End Sub. Dus ik doe iets fout.

1.JPG

Als ik hem koppel aan de knop middels vba krijg ik de volgende code:

Code:
Private Sub cmdFax13_Click()
Public Function ISOweeknum(ByVal Datum As Date) As Integer
  ISOweeknum = DatePart("ww", Datum - Weekday(Datum, 2) + 4, 2, 2)
End Function

Dim wb As Workbook
Set wb = Workbooks.Open("K:\\Weeklijsten 2012/weeklijst week " & IsoWeek(Date) & ".xls")

End Sub
 
Code:
Public Function ISOweeknum(ByVal Datum As Date) As Integer
  ISOweeknum = DatePart("ww", Datum - Weekday(Datum, 2) + 4, 2, 2)
End Function

Private Sub cmdFax13_Click()
Dim wb As Workbook
Set wb = Workbooks.Open("K:\\Weeklijsten 2012/weeklijst week " & IsoWeek(Date) & ".xls")
End Sub
 
ik krijg de volgende compileerfout:

sub of function is niet gedefinieerd.

Hij focust dan op IsoWeek.
 
Ik heb hem al.

In de code stond IsoWeek, maar in de function stond ISOweeknum.
Dit is aangepast en de code werkt nu perfect.


Erg bedankt mensen.
 
Het principe van ISOweek was al een beetje bekend, maar de verwijzing klopte niet door foute naam.
Nadat dit was gecorrigeerd, werkte de code perfect. Dus mijn dank daarvoor.

Ik heb trouwens je site als bladwijzer neergezet. Topsite.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan