2017-06-27 15 views
-3

私はVBAに日付を入力し、その日付が今週から次の月曜日までであるか、それより何週間長いかを知るスクリプトを作成しようとしていますだろう。VBA日付とVBAエラーまでの月曜日数

編集:以下の部分は解決しましたが、私はまだ上の部分で援助を利用することができます。私は愚かなVBAの代わりにVB.Netコードを使用していた。

私は以下のリンク先のページを見て、私に方向性を与えているようです。 Finding the date of monday in a week with VB.NET

私のVBAコードではコマンドを使用できないという問題がありました。それは他の人のために働いたようだが、VBAは私がそれらのコマンドを自分で使用させてくれないので、その奇妙な。なぜ誰かが私の理解を助けることができるだろうか?次の行は、私のExcel VBAモジュールにコードを追加して赤色になったものです。 "日付。"また働いていません。

数式を使用することができVBAなし
Dim today As Date = Date.Today  
Dim dayIndex As Integer = today.DayOfWeek 

dayIndex += 7 

Dim dayDiff As Integer = dayIndex - DayOfWeek.Monday  
Dim monday As Date = today.AddDays(-dayDiff) 
+2

「VBAでスクリプトを作成しようとしていますが、VB.NETタグは必要ありません。 vbaで – Plutonix

+1

が不明な場合は、タグの使用法のガイダンスのテキストを参照して、同じ行の変数に値を宣言して割り当てることはできません。それらを分割します: 'Dim today As Date'と' today = Date'などです。 –

+0

と 'dayIndex + = 7'は' dayIndex = dayIndex + 7'である必要があります –

答えて

1

=ABS(INT((WEEKDAY(A1-2)-A1+TODAY())/7)) 

A1はそれ
の数を持っている7で割​​っ週
の月曜日の日に出発予定日
2対応でありますToday()を任意の日付に変更することができます。この場合、2つの日付の間の月曜日の数をカウントします。

Sunday  1 
Monday  2 
Tuesday 3 
Wednesday 4 
Thursday 5 
Friday  6 
Saturday 7 

あなたはUDFユーザー定義関数必要VBA
を使用すると、

を必要とするすべての平日に対応する7まで1の間の任意の数に式2を変更することができます。そして、あなたが持っている

Function NumbWkDays(StartDate As Date, EndDate As Date, _ 
    Days As Long) As Integer 

    ' Returns the number of qualifying days between (and including) 
    ' StartDate and EndDate. Qualifying days are whole numbers where 
    ' each digit represents a day of the week that should be counted, 
    ' with Monday=1, Tuesday=2, etc. For example, all Mondays, Tuesdays 
    ' and Thursdays are to be counted between the two dates, set 
    ' WkDays = 124 on your worksheet. 
    ' 

    Dim iDate As Date 
    Dim strQdays As String 

    strQdays = CStr(Days) 
    NumbWkDays = 0 

    For iDate = StartDate To EndDate 
     If strQdays Like "*" & CStr(Weekday(iDate, vbMonday)) & "*" Then 
      NumbWkDays = NumbWkDays + 1 
     End If 
    Next iDate 

End Function 

を式として使用します

=NumbWKdays(startdate,Enddate,1) 

1月曜日

のために

は、あなたが持っているUDFを作成するには:[開発]タブの下に

  • クリックVisual Basicの
  • 挿入
  • モジュール

  • が続いてシートのように関数を使用するコードを貼り付け
上記
関連する問題