2017-06-20 11 views
0

VBAを作成して、昨日の日付をセルに自動的に入力するようにしましたが、6月18日(金曜日)月曜日に起動してください。VBAを使用して前回の作業日を取得する

`If .Column <> 11 Or .Row < 1 Then Exit Sub 
    If .Value = "Select" Then 
     If .Offset(0, 1).Value = "" Then 
      .Offset(0, 1).NumberFormat = "mm/dd/yy" 
      .Offset(0, 1).Value = Now - 1 
      .Offset(0, 2).Value = Now - 1 
      .Offset(0, 2).NumberFormat = "mmm-yy" '<~~ mmm-yy 
      .Offset(0, 3).Value = GetMonthWeek(Now - 1) 
     End If' 
+0

だからあなたはあなたの問題を解決するに任意の実際の試みはそれが定義された方法を知っている必要がありますように、 'GetMonthWeek'がネイティブVBAのコマンドや関数ではないことを理解(UDF?)最初の場所インチ – Jeeped

答えて

1

ワークシート関数は、現在の日が金曜日であるかどうかにかかわらず、前の金曜日を簡単に取り出すことができます。

'last Friday regardless 
=A2-WEEKDAY(A2, 16) 
'last Friday unless a Friday 
=A2-WEEKDAY(A2, 16)+(WEEKDAY(A2)=6)*7 

WEEKDAYおよびブール演算は、VBAに直接転送できます。

enter image description here

1

そのための任意の作り付けの方法があるかどうかはわからないが、次のロジックが動作します:

Dim tempDate 
tempDate = DateAdd("d", -1, Date)   'Today's date - 1 
While Weekday(tempDate) = 1 Or Weekday(tempDate) = 7  'If tempDate is a Sunday or a Saturday, keep on subtracting one day until we get a weekday 
    tempDate = DateAdd("d", -1, tempDate) 
Wend 
Cells(1, 1).Value = tempDate 

はあなたのコードでこれを実装してみて、それが動作するかどうか私に知らせてください。 :)

関連する問題