|
▼かみちゃん さん:
ありがとうございます。
シートモジュールと標準モジュールが別物とすこしずつ理解できてきました。
アドバイスにしたがい、範囲を限定しました。
これでMsgがでるので使用者は間違ったら気づくとおもいます。
すこし進めてみました。
1、ユーザーフォームでも使用する、ws1とiを宣言セクションで宣言し
2、UserForm1.Showを非コメント化し
3、マクロを実行した
そうしたらユーザーフォームのモジュールのiがポイントされ、「変数が定義されてない」と出ます。
宣言のしかたが悪いでしょうか?
(標準モジュール)
Option Explicit
Dim ws1 As Worksheet
Dim i As Long
Sub Sample()
Dim Cnm As String
Dim Pnm As String
Dim Mnm As String
Dim Tnm As String
If Not Application.Intersect(Range("B3:B100"), ActiveCell) Is Nothing Then
With ActiveCell
Cnm = .Offset(, -1).Value
Pnm = .Offset(0, 0).Value
Mnm = .Offset(, 3).Value
Tnm = .Offset(, 5).Value
End With
Set ws1 = Worksheets("history")
For i = 5 To ws1.Range("B65535").End(xlDown).Row
If IsEmpty(ws1.Cells(i, 2).Value) Then
ws1.Cells(i, 2).Value = Cnm
ws1.Cells(i, 3).Value = Pnm
ws1.Cells(i, 4).Value = Mnm
ws1.Cells(i, 9).Value = Tnm
UserForm1.Show
Exit For
End If
Next i
Else
MsgBox "B3〜B100のセルをアクティブにしてください。"
End If
' Cancel = True
End Sub
(ユーザーフォーム)
Option Explicit
Private Sub UserForm_Initialize()
Calendar1.Value = Date
カレンダーの日付をセルにセットする
End Sub
Private Sub Calendar1_Click()
TextBox1.Value = Calendar1.Value
カレンダーの日付をセルにセットする
End Sub
Private Sub カレンダーの日付をセルにセットする()
ws1.Cells(i, 5).Value = Calendar1.Value ←ここでひっかかる
End Sub
Private Sub CommandButton1_Click()
Unload UserForm1
End Sub
Private Sub UserForm_Deactivate()
Unload UserForm1
End Sub
|
|