0

sheet17.range("f14:aj14") に現在の月の日付を自動的に入力する VBA スクリプトを作成する方法を探しています。日付形式は mm/d/yyyy である必要があり、「FoundCell」メソッドを使用して、この範囲を使用して「日付」を検索できる必要があります。このコードを見つけて自分のニーズに合わせましたが、次の行のセルから右に次の列にデータが入力されます。「オフセット」番号を変更しようとしましたが、セルの範囲にデータを入力できません。また、VBA の初心者であるため、シートを新しいシートにコピーし、新しいシートを保存して、内容をクリアするマクロがあります。元の range(f15:AN73) を、毎月 1 日の午前 12 時に自動的に実行するコードがわかりません。これが私が日付人口のために持っているコードです:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim Sht As Worksheet
    Dim intDaysInMonth As Integer
    Dim i As Integer

    Set Sht = Worksheets("MAR") 'change to suit
    Target = Sht.Range("f14:aj14")
    intDaysInMonth = Day(DateSerial(Year(Now()), Month(Now()) + 1, 0))

    Target.Resize(intDaysInMonth, 1).ClearContents
    For i = 1 To intDaysInMonth
        Target.Offset(i - 0, 1) = DateSerial(Year(Now()), Month(Now()), i)
    Next i
    Set Sht = Nothing
End Sub

1セル下から始まる右側の次の列ではなく、 sheet17.range("f14:aj14") にデータを入力する日付が必要です。次に、シートを新しいシートに自動的に保存し、元の内容をクリアするコードが必要ですsheet.range("f15:an73")。どんな助けでも大歓迎です!前もって感謝します。

ミケーレ

4

1 に答える 1

0

これが、質問の日付記入部分に対する回答です。また、これをワークシート モジュールではなく、通常のモジュールに配置する必要があります。

Sub myDates()

Dim Sht As Worksheet
Dim intDaysInMonth As Integer
Dim i As Integer
Dim Target As Range

Set Sht = Worksheets("MAR")   'change to suit
intDaysInMonth = Day(DateSerial(Year(Now()), Month(Now()) + 1, 0))

Set Target = Sht.Range("f14").Resize(, intDaysInMonth) 'set target to days count
Target(1).Resize(, 31).ClearContents 'clear all previous

For i = 1 To intDaysInMonth
    Target(i).Value = DateSerial(Year(Now()), Month(Now()), i)
Next i
Set Sht = Nothing

End Sub

ただし、これをより便利にするには、ワークシート名を引数として別のサブルーチンから呼び出す必要があります。これにより、正しい月のワークシートにアクセスできます。次に、次のようになります。

Sub myDates(ShtName As String)

Dim Sht As Worksheet
Dim intDaysInMonth As Integer
Dim i As Integer
Dim Target As Range

Set Sht = Worksheets(ShtName)   'change to suit
intDaysInMonth = Day(DateSerial(Year(Now()), Month(Now()) + 1, 0))

Set Target = Sht.Range("f14").Resize(, intDaysInMonth) 'set target to days count
Target(1).Resize(, 31).ClearContents 'clear all previous

For i = 1 To intDaysInMonth
    Target(i).Value = DateSerial(Year(Now()), Month(Now()), i)
Next i
Set Sht = Nothing

End Sub
于 2013-11-07T05:18:09.390 に答える