
ユーザーフォームfrmMedicalInfoEntryに日付入力用のテキストボックスtxtDateとコマンドボタンbtnDispCalenderと配置して、カレンダーユーザーフォームfrmCalenderで作った、カレンダーから日付を入力するため、クラスモジュールclsCalenderにコードを以下のとおり追加して、実行しようとすると、「変数arryClass(c)が定義されていません」とエラーメッセージが出てプロシージャが止まってしまいます。何処が間違っているのでしょうか?ちなみに「’」のところはカレンダーが表示されないのでコメントアウトしているところです。なお、字数がオーバーするので、同一質問②で送ります。よろしくご教授ください。
①frmCalenderのコードは以下のとおりです。
Private arrayClass() As New clsCalender
'Public EntryControl As String
'Public RarentForm As UserForm
Private Sub cmbMonth_Change()
If CheckParam() Then
makeCalender cmbYear.Value, cmbMonth.Value
End If
End Sub
Private Sub cmbYear_Change()
If CheckParam() Then
makeCalender cmbYear.Value, cmbMonth.Value
End If
End Sub
Private Sub SpinButton1_SpinDown()
If cmbMonth.Value = 1 Then
cmbMonth = 12
cmbYear.Value = cmbYear - 1
Else
cmbMonth = cmbMonth - 1
End If
End Sub
Private Sub SpinButton1_SpinUp()
If cmbMonth.Value = 12 Then
cmbMonth = 1
cmbYear.Value = cmbYear + 1
Else
cmbMonth = cmbMonth + 1
End If
End Sub
Private Sub UserForm_Initialize()
Dim lbl As MSForms.Label
Dim i As Integer, j As Integer, c As Integer
Dim arrayClass() As Variant
Dim Weekdays() As Variant 'データ型に注意
Weekdays() = Array("日", "月", "火", "水", "木", "金", "土")
For i = 1 To 7
Set lbl = Me.Controls.Add("Forms.Label.1", , True)
With lbl
.Caption = Weekdays(i - 1)
.Width = 15
.Height = 15
.Left = 5 + (.Width + 2) * (i - 1)
.Top = 20
.BorderColor = &H666666
.BorderStyle = fmBorderStyleSingle
.Font.Size = 11
End With
Next
c = 1
For i = 1 To 6 '縦方向
For j = 1 To 7 '横方向
Set lbl = Me.Controls.Add("Forms.Label.1", , True)
With lbl
.Width = 15
.Height = 15
.Left = 5 + (j - 1) * (.Width + 2)
.Top = 20 + i * (.Height + 2)
.BorderColor = &H666666
.BorderStyle = fmBorderStyleSingle
.Font.Size = 11
.TextAlign = fmTextAlignRight
.Name = "D" & c
' ReDim Preserve arryClass(c)
' arrayClass(c).NewCalender lbl, Me
c = c + 1
End With
Next
Next
For i = Year(Date) - 3 To Year(Date) + 3
cmbYear.AddItem i
Next
For i = 1 To 12
cmbMonth.AddItem i
Next
'コンボボックスに値を代入すると、Changeイベントが発生する
cmbYear.Value = Year(Date)
cmbMonth.Value = Month(Date)
'Public変数の呼び出し元のフォームを格納
' Set ParentForm = frmMedicalInfoEntry
End Sub
Sub makeCalender(Nen As Integer, Tsuki As Integer)
Dim i As Integer, c As Integer
Dim WeekDay_of_firstday As Integer
Dim lastDay As Integer
Dim myDate As Date
'ラベルの表示をクリア
For i = 1 To 42
Controls("D" & i).Caption = ""
Next
c = 1
WeekDay_of_firstday = getWeeekday1st(Nen, Tsuki)
lastDay = Day(DateSerial(Nen, Tsuki + 1, 1) - 1) - 1
For i = WeekDay_of_firstday To WeekDay_of_firstday + lastDay
Controls("D" & i).Caption = c
Controls("D" & i).Tag = CStr(DateSerial(Nen, Tsuki, c))
Controls("D" & i).ForeColor = vbBlack
c = c + 1
Next
'前月の日付の設定
myDate = DateSerial(Nen, Tsuki, 1) - 1
c = Day(myDate)
For i = WeekDay_of_firstday - 1 To 1 Step -1
Controls("D" & i).Caption = c
Controls("D" & i).Tag = CStr(DateSerial(Year(myDate), Month(myDate), c))
Controls("D" & i).ForeColor = RGB(100, 100, 100)
c = c - 1
Next
'来月の日付の設定
myDate = DateSerial(Nen, Tsuki + 1, 1)
c = 1
For i = WeekDay_of_firstday + lastDay + 1 To 42
Controls("D" & i).Caption = c
Controls("D" & i).Tag = CStr(DateSerial(Year(myDate), Month(myDate), c))
Controls("D" & i).ForeColor = RGB(100, 100, 100)
c = c + 1
Next
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAで以下のようなコードを書いたらエラーになりました。何処が間違っているの教えて? 1 2023/02/10 18:30
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) Dateserialで データ抽出 2 2022/06/26 21:07
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
Microsoft Formsの「個人情報や...
-
Hideについて(.NET)
-
テキストボックス入力データの...
-
VBAでユーザーフォームを再表示...
-
ユーザーフォームのテキストボ...
-
Form_Load と Form_Activate の...
-
クリックイベントなのに、2回ク...
-
エクセルVBAのフォームを最...
-
C#で起動時のフォームを非表示...
-
ExcelVBAのユーザーフォームでe...
-
C# フォームのShow()をオーバー...
-
フォームのテキストボックスな...
-
MDIフォームでのモーダル
-
コントロールの存在確認
-
VBAのテキストフォームの折り返...
-
クリックするたびに、フォーム...
-
ACCESSのフォーム、開くんです...
-
パソコンの画面に合わせてユー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
Form_Load と Form_Activate の...
-
VBAでユーザーフォームを再表示...
-
Microsoft Formsの「個人情報や...
-
クリックイベントなのに、2回ク...
-
ユーザーフォームのテキストボ...
-
ユーザーフォーム上に現在日時...
-
ACCESSのフォーム、開くんです...
-
エクセルのチェックボックスの...
-
エクセルVBAのフォームを最...
-
VB.NETでフォームロード中のエ...
-
EXCEL VBA ユーザーフォームの...
-
VBA(エクセル)のユーザー...
-
【Excel VBA】ユーザフォームを...
-
Hideについて(.NET)
-
(Excel+VBA)ユーザーフォームの...
-
モーダルフォームとモードレス...
-
VBA コンボボックスとテキスト...
-
アクセス2013 フォームが...
おすすめ情報
実際にはどう書き変えればいいのでしょうか? まだ初心者なので、教えていただければ助かります。よろしくお願いします。