請求締日から請求締めの対象期間を

請求締日から請求締めの対象期間を取得するコード
とりあえず期待した動きはしているみたい

期待する動作
・締グループ(締日)と請求書発行日を設定すると、請求締めの対象期間の開始日と終了日を取得できる。
・請求書発行日が当月の締日(締グループ)より前の時は前月の対象期間を返す。
・月末の扱いをちゃんとする(2月や小の月における締めグループ:31の扱い)

まず各値を格納するクラスから
 Private Class 請求締日の情報
  Public 締グループ As Integer
  Public 請求書発行日 As Date
  Public 期間_開始日 As Date
  Public 期間_終了日 As Date
 End Class
締グループ:何日締めか?(整数)月末締めは31を設定する
請求書発行日:請求書を発行する日
期間_開始日:請求書の締め期間の開始日
期間_終了日:請求書の締め期間の終了日
です。

次に実際のコードはこんな感じ?
 Private Sub 締日設定(ByRef 締日 As 請求締日の情報)
  Dim 締グループ As Integer = 締日.締グループ  '締日の日付
  Dim 請求書発行日 As Date = 締日.請求書発行日

  Dim 日付_請求書発行日 As Integer = 請求書発行日.Day

  Dim 当月 As DateTime = dtp請求書発行日.Value
  Dim 前月 As DateTime = CDate(当月.Year & "/" & 当月.Month & "/1").AddMonths(-1)  '前月の1日
  Dim 来月 As DateTime = CDate(当月.Year & "/" & 当月.Month & "/1").AddMonths(+1)  '来月の1日
  Dim 当月末日 As Date = 来月.AddDays(-1)  '来月の1日の1日前が当月の末日

  '月末日かどうか調べる
  If 請求書発行日.Date.Equals(当月末日.Date) Then
   'なにもしない
  Else
   '締日より前の発行日なら前月の請求範囲を設定
   If 締グループ - 日付_請求書発行日 > 0 Then
    当月 = 当月.AddMonths(-1)
    前月 = 前月.AddMonths(-1)
    来月 = 来月.AddMonths(-1)
   End If
  End If

  Dim 締期間_終了日 As Date
  If Not Date.TryParse(当月.Year & "/" & 当月.Month & "/" & 締グループ, 締期間_終了日) Then
   締期間_終了日 = CDate(来月.Year & "/" & 来月.Month & "/1").AddDays(-1)
  End If

  Dim 締期間_開始日 As Date
  If Not Date.TryParse(前月.Year & "/" & 前月.Month & "/" & 締グループ + 1, 締期間_開始日) Then
   締期間_開始日 = CDate(CDate(当月.Year & "/" & 当月.Month & "/1"))
  End If

  締日.期間_開始日 = 締期間_開始日
  締日.期間_終了日 = 締期間_終了日
 End Sub

使うときには
 Dim 締日の情報 As New 請求締日の情報
 Dim 締期間_開始日 As Date
 Dim 締期間_終了日 As Date

 締日の情報.締グループ = 31
 締日の情報.請求書発行日 = System.DateTime.Today '今日の場合

 Call 締日設定(締日の情報)
 
 '値を取得する
 締期間_開始日 = 締日の情報.期間_開始日
 締期間_終了日 = 締日の情報.期間_終了日

とりあえずこれで使ってみよう