| 
    
     |  | 初めまして。メーカー系の会社に勤めていて、最近VBAを勉強し始めた者です。 エクセルの表を使って業務予定を管理しているのですが、カレンダーでも予定を管理したいと思っています。
 その際にエクセルに入力した予定をそのままカレンダーに反映させることは出来ないかと考え、下のようなVBAを作ってみたのですが上手く動きません。
 なぜ動かないのか教えていただきたいです。
 また、「もっとこうした方がいいよ」などのアドバイス等ありましたら
 宜しくお願い致します。
 
 
 Sub カレンダー入力()
 
 Dim A As Date  ‘日付
 Dim B As Long  ‘シリアル値
 Dim Z As Long  ‘行数
 
 Dim i As Integer ‘sheet1の最終行変数
 
 Dim myRange As Range ‘カレンダー選択範囲
 Dim myObj As Range  ‘シリアル値が一致しているセル
 Dim keyWord As String ‘一致しているシリアル値
 Dim firstcell As Range ‘一致しているシリアル値の最初のセル
 Dim Q As Range ‘一致しているシリアル値の真下のセル
 
 For Z = 1 To i
 
 i = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row 'sheet1の最終行数を格納
 
 
 A = Worksheets("Sheet1").Cells(Z, 1).Value ‘日付を読み取る
 
 B = CLng(A) ‘日付をシリアル値に変更
 
 Set myRange = Range("E1:K10") ‘検索したいカレンダーの範囲を選択
 
 keyWord = B
 
 Set myObj = myRange.Find(keyWord, LookAt:=xlWhole) ‘シリアル値が一致しているセルを探す
 
 If Not myObj Is Nothing Then ‘一致したシリアル値が1つだけでなかった場合
 
 Set firstcell = myObj '最初のセルを選択
 
 Do
 
 Set myObj = Cells.FindNext(myObj) '次に一致したセルを選択
 
 Range(myObj).Offset(1, 0).Activate 'その真下のセルを選択
 
 Q = Range(myObj).Offset(1, 0).Activate
 
 
 If Q = "" Then ‘真下のセルが空白だった時
 
 Set Q = Worksheets("Sheet1").Cells(Z, 2).Value ‘sheet1の値を入れる
 
 
 Else
 
 If VarType(ActiveCell.Offset(1, 0)) = 3 Then ‘既に文字が入っていた場合
 Set Q = Worksheets("Sheet1").Cells(Z, 2).Value & vbLf & Str(Q)
 
 Else
 Set Q = Worksheets("Sheet1").Cells(Z, 2).Value & vbLf & Str(Q)
 
 End If
 
 End If
 
 Loop While myObj.Address <> firstcell.Address
 
 End If
 
 Next Z
 
 End Sub
 
 
 |  |