MS Access Tips/Sample and VBA and Blog customize etc...

カレンダー形式のスケジュール管理フォーム作成 その1

カレンダー形式でスケジュールを表示できる設計例です。最終的には、スケジュールデータの詳細表示、入力もできるように設計します。祝祭日表示にも対応する予定です。

今回は、チュートリアル形式で、一から制作手順を紹介します。効率的な開発法の御参考になるかも。

FrmCalendar5.png

難易度:

新規フォームを作成します。ラベルをフォームの左上に置きます。標題はとりあえず「label」としておきましょう。これをコピーして貼り付けます。6回貼り付けると7個のラベルが縦に並びます。位置やサイズは適当でいいです。あとでVBAで整列させますので。

FrmCalendar1.png

ラベルの上方のルーラーをクリックして、ラベルを全選択します。これをコピーして貼り付けます。貼り付けたラベルを複数選択状態のまま、先に配置したラベルの右横に移動させます。あと10回貼り付けします。これで7行×12列=84個のラベルが配置されます。各ラベルの名前が ラベル0, ラベル1, ・・・ラベル83 となっているのを確認してください。

FrmCalendar2.png

このフォームを「F_Calendar」と名前を付けて保存します。

標準モジュールに下記の関数を作成します。


2012/02/20 訂正:コードに間違いがあたましたので修正しました。

「F_Calendar」フォームをデザインビューで開いたままで、イミディエイトウィンドウで

LabelRename

と記述してEnterキーを押してプロシージャを実行します。ラベルの標題が下図のようになり、名前も標題と同じななっているのを確認してください。

FrmCalendar3.png

さらに下記の関数を標準モジュールに作成します。

補足:Access2000以前では、コントロールのMoveメソッドは未実装ですので、Left/Top/Width/Height プロパティをそれぞれ設定するようにして下さい。

同様に、イミディエイトウィンドウで

LabelSetSize

と記述してEnterキーを押してプロシージャを実行します。ただし、実行する前にフォームのサイズを幅、高さとも15cm以上に広げておいてください。これで、下図のようになります。カレンダーらしくなってきましたね。

補足: カレンダーのサイズを変更したい場合は、定数(Const)の値を変更してから、レポートのデザインビューを開いて、イミディエイトウィンドウから、LabelSetSize を実行してください。この方法で後からいつでも変更できます。

FrmCalendar4.png

ここまでくれば察しがつくと思いますが、D1~D42 は日にちを表示するラベル、T1~T42 は予定を表示するラベルになります。

このようにコントロール数が多いフォームやレポートを作成するとき、デザイン画面上でコントロール名を変更したり、マウスで位置、サイズを調整したりするのはなかなか大変な作業になります。このようにVBAでやると作業は楽になります。今回はコントロールはコピー&ペーストで作成しましたが、さらに進めて、CreateControlメソッドを使ってコントロールを作成するのも自動化する方法もあります。

また、LabelSetSize は、今後、カレンダーの位置、サイズ を変更するときに利用できますので、削除せずに残しておくといいでしょう。定数(Const)を変更して実行するだけでサイズ変更できますので。

曜日のラベルがないので、これは、D1~D7 を選択してコピー&ペーストして手作業で作りましょう。
次に、テキストボックスを2つ配置して名前を 年, 月 とします。
コマンドボタンを2つ配置して名前を cmdPrev, CmdNext とします。下図のような配置にします。さらに曜日と日にちのラベルを複数選択して、太字、中央寄せ、フォントサイズ11 に設定します。

FrmCalendar6.png

フォームモジュールを下記のように記述します。
(フォームモジュールはフォームのデザインビューでメニューかツールバー(リボン)の「コードの表示」をクリックすると自動で生成されてVBAウィンドウが開きます。 )

これでフォームを保存して、開いてください。コマンドボタンをクリックすることによって月を移動できて、それに合わせてカレンダーの日付も変更されるのを確認してください。

FrmCalendar5.png

次回は、祝祭日対応にする予定です。
カレンダー形式のスケジュール管理フォーム作成 その2

サンプルファイルが下記からダウンロードできます。
FrmCalendar1_07.zip (Access 2007-2010 形式 - 39kb)
FrmCalendar1.zip (Access 2002-2003 形式 - 48kb)
FrmCalendar1_2k.zip (Access 2000 形式 - 45kb)

拍手する

61 Comments

ootuki says..."指定した日の休日設定"

お世話になります。
カレンダー作成させて頂きスケジュールの管理をしたいのですが、
指定した休日を設定するようなやり方教えて頂けないでしょうか?
アドバイスよろしくお願い致します。

2012.02.04 11:07 | URL | #8BaZKrGo [edit]
hatena says...""

休日を登録するテーブルを作成します。

T_休日
日付 日付/時刻型 主キー
備考 テキスト型

記事のコードの日にち設定関数を下記ように変更します。(※がついてる行は修正箇所です。)

'カレンダー 日にち設定関数
Private Function SetCalendar()
Dim i As Integer, D As Date, m As Integer, n As Integer

  m = Me.月
  FirstDay = DateSerial(Me.年, m, 1)
  FirstDay = FirstDay - Weekday(FirstDay)
  For i = 1 To 42
    With Me("D" & i)
      D = FirstDay + i
      .Caption = Day(D)
      .ControlTipText = Nz(DLookup("備考","T_休日","日付=#" & D & "#")) '※ 休日の備考をヒントテキストに設定
      If Weekday(D) = 1 Or .ControlTipText <> "" Then '※
        .ForeColor = vbRed  '日曜または祝日は文字色 赤
      ElseIf Weekday(D) = 7 Then
        .ForeColor = vbBlue  '土曜は文字色 青
      Else
        .ForeColor = vbBlack
      End If
      n = Month(D)
      If m = n Then
        .FontSize = 11
      Else
        .FontSize = 8 '月が異なるときは文字を小さく
      End If
    End With
    Me("T" & i).Caption = ""
  Next

End Function

以上です。下記もご参考に。

http://hatenachips.blog34.fc2.com/blog-entry-187.html$カレンダー形式のスケジュール管理フォーム作成 その2

2012.02.04 15:30 | URL | #5uE6dEgY [edit]
ootuki says...""

ありがとうございます。

2012.02.06 09:15 | URL | #8BaZKrGo [edit]
こあき says..."何度やってもできない"

お世話になります。
上記のとおりに何度もやってみたのですが



Public Sub LabelRename()
Dim i As Long
With Forms!F_Calendar
For i = 0 To 41
.Controls("ラベル" & i).Caption = "D" & i + 1
.Controls("ラベル" & i).Name = "D" & i + 1
.Controls("ラベル" & i + 42).Caption = "T" & i
.Controls("ラベル" & i + 42).Name = "T" & i
Next
End With

End Sub
をやってみたのですが

T1の所がT0になってしまうのはなぜでしょうか?

2012.02.20 14:21 | URL | #- [edit]
hatena says..."re: 何度やってもできない"

> T1の所がT0になってしまうのはなぜでしょうか?

コードが間違ってました。すみませんでした。

下記のように + 1 を追加してください。

.Controls("ラベル" & i + 42).Caption = "T" & i + 1
.Controls("ラベル" & i + 42).Name = "T" & i + 1

ブログの記事も修正しておきました。

2012.02.20 14:48 | URL | #5uE6dEgY [edit]
こあき says...""

再度すいません。次のステップで
.Controls("D" & i).Move _
. Col * ColWidth + CalLeft,_が
コンパイルエラー  
構文エラーで赤くなってしまいます。

そこを直そうとすると
構文エラー  式
で  * の所が赤くなります。

2012.02.20 16:32 | URL | #- [edit]
hatena says..."re: 何度やってもできない"

コードを表示しているところへマウスを持って行くと、右上にアイコンが表示されますので、その2番目のアイコンをクリックしてクリップボードへコピーして、それを標準モジュールに貼り付けて試してみてください。

2012.02.20 18:07 | URL | #5uE6dEgY [edit]
こあき says...""

やってみましたが
コンパイルエラー
SubまたはFunctionが定義されていません。
です。

2012.02.21 11:10 | URL | #- [edit]
hatena says..."re: 何度やってもできない"

ひょっとして、Accessのバージョンは2000以前ですか。

もしそうなら、

    .Controls("D" & i).Move _
      Col * ColWidth + CalLeft, _
      Low * (DHeight + THeight) + CalTop, _
      ColWidth, DHeight
    .Controls("T" & i).Move _
      Col * ColWidth + CalLeft, _
      Low * (DHeight + THeight) + DHeight + CalTop, _
      ColWidth, THeight

の部分を、下記のように変更してください。

    .Controls("D" & i).Left = Col * ColWidth + CalLeft
    .Controls("D" & i).Top = Low * (DHeight + THeight) + CalTop, _
    .Controls("D" & i).Width = ColWidth
    .Controls("D" & i).Height = DHeight
    .Controls("T" & i).Left = Col * ColWidth + CalLeft
    .Controls("T" & i).Top = Low * (DHeight + THeight) + DHeight + CalTop, _
    .Controls("T" & i).Width = ColWidth
    .Controls("T" & i).Height = THeight

2012.02.21 12:00 | URL | #5uE6dEgY [edit]
こあき says...""

ACCESS2010です。

2012.02.21 15:07 | URL | #- [edit]
hatena says..."re: 何度やってもできない"

>ACCESS2010です。

そうですか。
これ以上は、実際のファイルをみずに、文章だけのやりとりでは究明は難しそうですので、このページの上部にあるメニューバーの BBSをクリックして「掲示板」の方で続けてもらえますか。
そちらですとファイルをアップロードすることも可能ですので。


2012.02.21 16:38 | URL | #5uE6dEgY [edit]
yosi says..."日付の形式がyy/MM/ddだとエラーが発生"

地域と言語の設定で、日付(短い形式)がyy/MM/ddに設定されているとエラーが発生します。yy/MM/ddでも動作するようにできるでしょうか?

2012.07.19 11:43 | URL | #OpjOh/wQ [edit]
hatena says..."re:日付の形式がyy/MM/ddだとエラーが発生"

地域と言語の設定で yy/MM/dd に設定して、このページのサンプルMDBで試してみましたが、エラーは再現できませんでした。

どのようなエラーが出るのか具体的に説明してもらえますか。えらーメッセージ、エラーの出る箇所など、、、

それと、OS, Access のバージョンも教えてください。

2012.07.19 12:28 | URL | #5uE6dEgY [edit]
yosi says..."re:日付の形式がyy/MM/ddだとエラーが発生"

すいません。
「カレンダー形式のスケジュール管理フォーム作成 その3」のコードでのエラーです。

Option Compare Database
Option Explicit
Dim FirstDay As Date

'カレンダー 日にち設定関数
Private Sub SetCalendar()
Dim i As Integer, D As Date, m As Integer, n As Integer

Me.年 = Year(Me.txtDate)
Me.月 = Month(Me.txtDate)
m = Me.月
FirstDay = DateSerial(Me.年, m, 1)
FirstDay = FirstDay - Weekday(FirstDay)
For i = 1 To 42
With Me("D" & i)
D = FirstDay + i
.Caption = Day(D)
.ControlTipText = ktHolidayName(D) '祝日名をヒントテキストに設定
If Weekday(D) = 1 Or .ControlTipText <> "" Then
.ForeColor = vbRed '日曜または祝日は文字色 赤
ElseIf Weekday(D) = 7 Then
.ForeColor = vbBlue '土曜は文字色 青
Else
.ForeColor = vbBlack
End If
n = Month(D)
If m = n Then
.FontSize = 11
Else
.FontSize = 8 '月が異なるときは文字を小さく
End If
End With
Next
Me("T" & Me.txtDate - FirstDay).BackStyle = 1

SetSchedule
End Sub


'フォーム 開くとき
Private Sub Form_Open(Cancel As Integer)
Dim i As Integer

For i = 1 To 42
Me("T" & i).OnClick = "=SetDate(" & i & ")"
Next
Me.cmdPrev.OnClick = "=MoveMonth(-1)"
Me.CmdNext.OnClick = "=MoveMonth(1)"
Me.txtDate = Date
SetCalendar


End Sub

Private Function MoveMonth(n As Integer)
Me("T" & Me.txtDate - FirstDay).BackStyle = 0 '透明
Me.txtDate = DateAdd("m", n, Me.txtDate)
SetCalendar
DoEvents
End Function

Private Function SetDate(i As Integer)
Me("T" & Me.txtDate - FirstDay).BackStyle = 0 '透明
Me.txtDate = FirstDay + i
Me("T" & i).BackStyle = 1
End Function

'予定表示プロシージャ
Public Sub SetSchedule()
Dim i As Integer, rs As DAO.Recordset
For i = 1 To 42
Me("T" & i).Caption = ""
Next
Set rs = CurrentDb.OpenRecordset( _
"SELECT 日付, 件名 FROM T_予定 WHERE " & _
"日付>#" & FirstDay & "# AND 日付<=#" & FirstDay + 42 & "#", _
dbOpenForwardOnly, dbReadOnly)
Do Until rs.EOF
With Me("T" & rs!日付 - FirstDay)
.Caption = .Caption & rs!会社名 & vbCrLf & vbCrLf
End With
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
End Sub

上記の下から7行目  With Me("T" & rs!日付 - FirstDay)
の部分でエラーがでます。

エラーメッセージは、
「実行時エラー'2465':
指定した式で参照されている'T-387'フィールドが見つかりません。」
と出ます。
Windows7,Access2010です。
よろしくお願いします。

2012.07.19 13:22 | URL | #OpjOh/wQ [edit]
hatena says..."re:日付の形式がyy/MM/ddだとエラーが発生"

詳細報告ありがとうございます。再現できました。


対策は、エラーが出た行の3行前のコード
"日付>#" & FirstDay & "# AND 日付<=#" & FirstDay + 42 & "#", _

を下記に修正してください。

"日付>#" & Format(FirstDay, "yyyy/mm/dd") & "# AND 日付<=#" & Format(FirstDay + 42, "yyyy/mm/dd") & "#", _


年を2桁にすると、VBAとSQLで解釈が異なるのがエラーの原因です。手抜きコードではダメですね(反省)

2012.07.19 13:45 | URL | #5uE6dEgY [edit]
yosi says..."re:日付の形式がyy/MM/ddだとエラーが発生"

うまくできました。
助かりました。
ありがとうございました。

2012.07.19 13:55 | URL | #OpjOh/wQ [edit]
n.hayashi says..."スタートから躓いてしまいました"

今回「カレンダー形式のスケジュール管理フォーム作成その1」から、作成を行いたく、スタートしたところ、フォーム作成の次の標準モジュールのところで、早くも不備となってしまいました。このような作成は、今回初めてで、何が悪いのか理解できておりません。何とか、この課題を最後まで達成したいのですが、スタートで躓いてしまい途方にくれております。何とかご教授願いたいのですが。宜しく御願いいたします
標準モジュールへは下記のように記入いたしました
Public Sub LabelRename()
Dim i As Long

With Forms!F_Calendar
For i = 0 To 41
.Controls("ラベル" & i).Caption = "D" & i + 1
.Controls("ラベル" & i).Name = "D" & i + 1
.Controls("ラベル" & i + 42).Caption = "T" & i + 1
.Controls("ラベル" & i + 42).Name = "T" & i + 1

Next
End With

End Sub
確認の為イミディエイトウインドウを使用して確認を行った際、「コンパインエラー SubまたはFunctionが定義されておりません」と出てしまいうまく進めません。原因と対策をお教え頂きたく、宜しく御願いいたします。

2012.10.25 15:39 | URL | #- [edit]
hatena says..."re:スタートから躓いてしまいました"

まず、VBAウィンドウのメニューで [デバック]-[***** のデバッグ]をクリックして
コンパイルエラーがでないか確認してください。
(****** の部分はプロジェクト名になります)

エラーがでたら、エラー行が反転表示されますので、どの行か教えてください。

2012.10.25 15:54 | URL | #5uE6dEgY [edit]
n-hayashi says..."スタートから躓いてしまいました"

VBAウインドウのメニューで「ディバック」のあとの「****のディバック」が見つかりません。いかがいたしましょう。

2012.10.25 17:43 | URL | #- [edit]
hatena says..."re:スタートから躓いてしまいました"

あっ、すみません。
「**** のコンパイル」でした(汗)。

2012.10.25 18:56 | URL | #5uE6dEgY [edit]
n-hayashi says..."スタートから躓いてしまいました"

お世話になります。早速,***のコンパイルをクリックしてみましたが、特にコンパイルエラーは出ませんでした。

2012.10.26 09:06 | URL | #- [edit]
hatena says..."Re: スタートから躓いてしまいました"

> お世話になります。早速,***のコンパイルをクリックしてみましたが、特にコンパイルエラーは出ませんでした。

では、もういちどイミディエイトウィンドウで
LabelRename
と入力してEnterキーで実行してみてください。
そのときにでるエラーメッセージとどの行が反転表示されるか教えてください。

2012.10.26 11:52 | URL | #- [edit]
n-hayashi says..."スタートから躓いてしまいました"

何度も申し訳ありません。ご指示の通り行った結果、「実行エラー’438’オブジェクトは、このプロパティをサポートしていません」とメッセージが出ました

2012.10.26 13:26 | URL | #- [edit]
hatena says..."Re: スタートから躓いてしまいました"

そのとき、メッセージボックスの デバッグ というボタンをクリックするとどの行が反転表示されますか。


あと、フォーム上に7行×12列=84個のラベルが配置されていて、その名前が、ラベル0, ラベル1, ・・・ラベル83 となっていますか。

なっていなければ、そのフォームは削除して、一から作り直してください。

2012.10.26 17:08 | URL | #5uE6dEgY [edit]
n-hayashi says..."スタートから躓いてしまいました"

すみません先ほど、記入するのを忘れておりました。
1)フォームを立ち上げずに行った場合は、With Forms!F_Calendarが変色
2)フォームを立ち上げて行うと.Controls("ラベル" & i).Coption = "D" & i + 1が変色しました
又、フォームについてはラベル0~ラベル83になっておりますことを、再度確認いたしました。
以上、大変ご面倒をお掛けいたしますが、宜しく御願いいたします。

2012.10.26 17:38 | URL | #- [edit]
hatena says..."Re: スタートから躓いてしまいました"

> 1)フォームを立ち上げずに行った場合は、With Forms!F_Calendarが変色

フォームは開いた状態で実行してください。
フォーム上のコントロール名を変更する処理ですので。

> 2)フォームを立ち上げて行うと.Controls("ラベル" & i).Coption = "D" & i + 1が変色しました

Coption がスペル間違いですね。

Caption に変更してください。


2012.10.26 17:53 | URL | #5uE6dEgY [edit]
nhayashi says..."スタートから躓いてしまいました"

お世話になります。スペルを修正し再度「LabelRename 」にて、確認してみました。フォームのラベル0のみD-1に変更され「.Controls("ラベル" & i).Name = "D" & i + 1」のところが、黄色く変色しました

2012.10.30 11:32 | URL | #- [edit]
hatena says..."Re: スタートから躓いてしまいました"

エラーについて質問するときはエラーメッセージも提示してください。

「F_Calendar」フォームをデザインビューで開いてますか。

2012.10.30 12:47 | URL | #5uE6dEgY [edit]
nhayasi says..."スタートから躓いてしまいました"

ありがとうございました。今回は、LabelRename でフォームの名前が変更されました。F_Calendarでは「コンパイルエラー」「SubまたはFunctionが定義されておりません」と出ますが問題ないでしょうか。色々ご迷惑をお掛けしますが、今一度お教えください。宜しく御願いいたします。

2012.10.30 13:45 | URL | #- [edit]
hatena says..."Re: スタートから躓いてしまいました"

> 今回は、LabelRename でフォームの名前が変更されました。

うーん、「今回は、」、何をどのようにしたのか。
とにかくどこかで間違っているのだと思いますが、どこで間違っているのか、提示された情報から推測するのは難しいです。

とりあえず、もう一度、新規にフォームを作成して、この記事の最初から、記事の説明通りに作成してみてください。記事内の語句で意味の分からない部分がありましたら、勝手に解釈せずに質問してください。

記事通りに間違いなく設定すればエラーなく実行できるはずです。

2012.10.30 14:05 | URL | #5uE6dEgY [edit]
n-hayashi says..."スタートから躓いてしまいました"

色々ありがとうございました。何とか「その1」の最後まで無事終了できました。
ようやく、カレンダーになりました。今後更にその2へ進んで頑張りたいと思いますので、又、質問させていただくことも有ろうかと思いますが、宜しく御願いいたします。

2012.10.31 14:49 | URL | #- [edit]
Nana says..."フォームモジュール部分が入力しても反映されません"

上記のカレンダー作成方法に関して、わからない事がありますので、教えていただけますでしょうか?

現在使っているものはAccess2003なのですが、何度フォームモジュールの部分を入力しても、フォームに反映されず、日付に変わりません。
念のため、コピー&ペーストで間違いのないように入れてもいるのですが、それでも変わりません。
フォームモジュール入力の前までは順調に進んでいました。
エラーコードは特に出ません。
超初心者の為、全く理由がわかりませんので、教えてください。
よろしくおねがいします。

2013.01.17 09:58 | URL | #- [edit]
Nana says..."フォームモジュールが反映できない件"

hatena様、先ほどの件ですが、入力するモジュールが違っていたようです。
失礼いたしました。

ところが、今度は最終段階で確認の為にカレンダーのフォームを開こうとするとコンパイルエラー(メソッドまたはデータメンバーが見つかりません)が出てしまいます。
そこでOKを押すと、Private Sub Form_Open(Cancel As Integer)
が黄色く反転します。
アドバイスお願いします。

2013.01.17 11:29 | URL | #- [edit]
Nana says..."フォームモジュールが反映されない件"

hatena様、できました。
大変失礼いたしました。
コマンドボタンの名前がちゃんと入力できていなかったようです。
次の段階でまた質問するかもしれませんが、よろしくお願いします。

2013.01.17 15:46 | URL | #- [edit]
tetsuya says..."何かよい方法をご教授お願いします。"

こんばんは。
現在、access2003を使用して、簡易なリハビリカルテを作成しております。管理人様の作成されたカレンダーを使用させていただき、それぞれの日にち毎にオプショングループを挿入しようと試みましたが、うまくいきませんでした。何かよい方法をご教授お願いします。

2013.04.17 00:58 | URL | #cxq3sgh. [edit]
hatena says..."re:何かよい方法をご教授お願いします。"

このサンプルでは日付の下にラベルを配置してテーブルのスケジュールを表示させてますが、すべての日付の下にオプショングループを配置するのでしょうか。

むしろ、オプショングループで選択した項目名をラベルに表示させるようにしたほうがスキッリすると思うのですがいかがでしょうか。

それならコードの一部を少し変更するだけで対応出来ます。

2013.04.17 11:23 | URL | #5uE6dEgY [edit]
tetsuya says..."re:何かよい方法をご教授お願いします。"

ご返信ありがとうございます。
自分の構想の中では、すべての日付の下にオプショングループを配置しようと考えていました。なるべく、スマートなものにしたいと思い、管理人様の提案が良いと思われます。

当方初心者なもので、どこのコードをいじればいいか分かりません。
ご教授お願いします。

2013.04.17 15:41 | URL | #- [edit]
hatena says..."re:何かよい方法をご教授お願いします。"

ここで、やり取りするのは、辛いので、私の主催する下記の掲示板へ移動しましょう。

hatena の Microsoft Access 掲示板
http://hatena-access.progoo.com/bbs/

その際、現在、データを格納しているテーブル名、フィールド構成を提示してください。

あと、「カレンダー形式のスケジュール管理フォーム作成」シリーズはその4までありますが、その3 までは、読み進めておいてください。

2013.04.18 13:49 | URL | #5uE6dEgY [edit]
shimizu says..."フォームモジュールとは?"

access2003です。
モジュールとかまったく理解できていない素人です。このような質問をして申し訳ないのですがフォームモジュールというのは標準モジュール、クラスモジュールとは違うものなのですか?フォームモジュールに記述のところから進めません。ご教授お願いします。

2013.09.23 12:25 | URL | #XSzBkAmo [edit]
hatena says..."re:フォームモジュールとは?"

フォームに関連付けられたモジュールという意味です。

フォームモジュールの作成はいろいろな方法があります。

フォームのデザインビューでメニューかツールバー(リボン)の「コードの表示」をクリックすると自動で生成されてVBAウィンドウが開きます。

フォームの開くときとコマンドボタンのクリック時などのイベントプロシージャを作成すると自動でされます。こちらの方が使う機会は多いでしょう。

今回は、フォームの開くときのイベントを使用してますので、デザインビューでフォームを選択して、イベントの「開くとき」プロパティで[イベント プロシージャ]を選択してビルドボタンをクリックするとVBAウィンドウが開きますので、そこに記述(コピー)するといいでしょう。

2013.09.23 13:45 | URL | #5uE6dEgY [edit]
shimizu says..."フォームモジュール記述後エラー"

フォームモジュール、ご説明ありがとうございました。間違ってはいないと思うのですがフォームモジュールへコピーしてフォームを開こうとすると
「イベントプロパティに指定した式 開く時でエラーが発生しました。名前が適切ではありません:Form_Open」 とエラー表示が出て開けません。よろしくお願いします。

2013.09.28 12:52 | URL | #hfCY9RgE [edit]
hatena says..."re:フォームモジュール記述後エラー"

> 「イベントプロパティに指定した式 開く時でエラーが発生しました。名前が適切ではありません:Form_Open」 とエラー表示が出て開けません。

既に、「開くとき」のイベントプロシージャがある状態で、コードをコピペしてませんか。もし、そうなら、複数ある Form_Open のコードを一つにまとめてください。

それでうまくいかないか、上記に該当しない場合は、現状のフォームモジュールのコードをコピーしてここにはりつけてください。

2013.09.29 03:52 | URL | #5uE6dEgY [edit]
shimizu says..."フォームモジュール記述後エラー2"

ありがとうございます。コードを一つにまとめる?理解できずすみません。現状のコード貼り付けます。よろしくお願いします。


Option Compare Database

Private Sub Form_Open(Cancel As Integer)

End Sub
Option Compare Database
Option Explicit
Dim FirstDay As Date

'カレンダー 日にち設定関数
Private Function SetCalendar()
Dim i As Integer, D As Date, m As Integer, n As Integer

m = Me.月
FirstDay = DateSerial(Me.年, m, 1)
FirstDay = FirstDay - Weekday(FirstDay) 'カレンダーの起点日
For i = 1 To 42
With Me("D" & i)
D = FirstDay + i
.Caption = Day(D)
If Weekday(D) = 1 Then
.ForeColor = vbRed '日曜は赤文字
ElseIf Weekday(D) = 7 Then
.ForeColor = vbBlue '土曜は青文字
Else
.ForeColor = vbBlack
End If
n = Month(D)
If m = n Then
.FontSize = 11
Else
.FontSize = 8 '月がことなるときは小文字
End If
End With
Me("T" & i).Caption = ""
Next

End Function

Private Function MoveMonth(n As Integer)
Dim D As Date
D = DateAdd("m", n, DateSerial(Me.年, Me.月, 1))
Me.年 = Year(D)
Me.月 = Month(D)
SetCalendar
DoEvents
End Function

'フォーム 開くとき
Private Sub Form_Open(Cancel As Integer)
Me.cmdPrev.OnClick = "=MoveMonth(-1)"
Me.CmdNext.OnClick = "=MoveMonth(1)"
Me.年 = Year(Date)
Me.月 = Month(Date)
SetCalendar
End Sub

2013.09.30 08:28 | URL | #vUfEqGYA [edit]
hatena says..."re:フォームモジュール記述後エラー2"

冒頭の下記の3行を削除してください。

Option Compare Database

Private Sub Form_Open(Cancel As Integer)

End Sub

2013.09.30 10:29 | URL | #5uE6dEgY [edit]
shimizu says..."コンパイルエラー"

3行を削除してフォームを開こうとすると  「コンパイルエラー  メソッドまたはデータメンバが見つかりません。」というエラーが出ます。
何度も申し訳ありません。よろしくお願いします。

2013.09.30 12:25 | URL | #vUfEqGYA [edit]
hatena says..."re:コンパイルエラー"

> 3行を削除してフォームを開こうとすると  「コンパイルエラー  メソッドまたはデータメンバが見つかりません。」というエラーが出ます。

エラーが出たときに、VBAウィンドウで選択表示されている部分はどこですか。

2013.09.30 12:45 | URL | #5uE6dEgY [edit]
shimizu says..."コンパイルエラー1"

'フォーム 開くとき
Private Sub Form_Open(Cancel As Integer)
Me.cmdPrev.OnClick = "=MoveMonth(-1)"
Me.CmdNext.OnClick = "=MoveMonth(1)"
Me.年 = Year(Date)
Me.月 = Month(Date)
SetCalendar
End Sub

.年= の部分です。 OKするとPrivate Sub Form_Open(Cancel As Integer)
部分が黄色になります。

2013.09.30 13:07 | URL | #vUfEqGYA [edit]
hatena says..."re:コンパイルエラー1"

> .年= の部分です。

フォームの年を表示するテキストボックスの名前が、「年」になっていないのでは?


2013.09.30 13:59 | URL | #5uE6dEgY [edit]
shimizu says..."出来ました"

親切にお付き合いいただいてありがとうございます。年を表示する名前が年になっていず月を表示するところもなっていず、それを直したらできました。先に進んでみたいと思います。

2013.09.30 15:55 | URL | #vUfEqGYA [edit]
yaghi says..."教えてください。"

お世話になります。

F_Clenderの先頭に社員IDのコンボボックスを配置して各社員ごとの日報が作成できるようにしたいと思っています。

なかなか思うようにできません。どのようにしたらいいか教えてください。
よろしくお願いします。

2014.10.01 11:01 | URL | #- [edit]
yaghi says...""

上記の質問者です。

ACCESSは2003です。20人ほどの社員がネットワークで納期管理を使用しています。
そこへ挿入したいと考えています。

よろしくお願いします。

2014.10.01 11:22 | URL | #- [edit]
hatena says..."re:教えてください。"

> F_Clenderの先頭に社員IDのコンボボックスを配置して各社員ごとの日報が作成できるようにしたいと思っています。

「日報を作成」とは具体的にどのようなことでしょうか。

社員毎にその日の予定をレポートに印刷するということでしょうか。
もう少し具体的、詳細にやりたいことを説明してもらわないと。

また、どこまでできて、どのようにうまく行かないのがピンポイントで質問してください。

2014.10.01 13:56 | URL | #5uE6dEgY [edit]
yaghi says...""

思いもよらない早いご対応いただき感謝いたします。

[1067] ID抽出----というご質問をされた方がおられますが、
それに近い事です。(これを試したのですが、上手く出来ませんでした。)


これは別フォームから抽出ということでしたが、これをF-Calenderフォーム内で処理をしたいと思います。


それで、やりたいことなのですが、社員1、社員2、、、、と最初にコンボボックスで選択してから、選択された社員の予定とかその日の作業を記入できるようにしたいのです。 

そして、社内ネットワーク上で全ての社員が各社員の予定、作業内容を把握できるような形にしたいと思っています。

お手数をおかけしますが、よろしくお願いします。




2014.10.01 14:28 | URL | #- [edit]
yaghi says..."1158-1159-1160-1161の続きです。"

お世話になります。

初心者で上手く説明ができていないようです。

現状は

T-予定テーブルに社員ID、社員名を追加。

F_Calendarフォームに社員IDのコンボボックスを作成しています。

サブフォームのF-予定はコンボボックスで選択した社員で選択することができました。

この選択した社員のF-予定の内容をカレンダーに反映するやり方が解りません。


お手数ですがアドバイスよろしくお願いします。

2014.10.02 08:50 | URL | #- [edit]
yaghi says...""

[1067] ID抽出 --を参考にして動くようになりました。

このカレンダーに出会えて幸いでした。

ありごうとございます。



2014.10.03 10:31 | URL | #- [edit]
yaghi says..."教えてください。"

お世話になります。

カレンダーで第二、第四土曜日を休日(日付)を赤にする簡単な方法を
ご教授してください。

お手数をおかけしますが、よろしくお願いします。

2014.10.06 09:34 | URL | #- [edit]
hatena says..."第二、第四土曜日を休日"

> カレンダーで第二、第四土曜日を休日(日付)を赤にする簡単な方法を
> ご教授してください。

カレンダー 日にち設定関数 の

      ElseIf Weekday(D) = 7 Then
        .ForeColor = vbBlue   '土曜は青文字
      Else

の部分を下記に変更してください。

      ElseIf Weekday(D) = 7 Then
        Select Case (Day(D) - 1) \ 7
        Case 1, 3
          .ForeColor = vbRed
        Case Else
          .ForeColor = vbBlue
        End Select
      Else

2014.10.08 14:41 | URL | #5uE6dEgY [edit]
yaghi says..."re:第二、第四土曜日を休日"

ご指導ありがとございます。

上手く出来ました。

これを自力でやれば多くの時間がかかったと思います。

本当にありがとうございました。

2014.10.09 10:05 | URL | #- [edit]
KABA says..."ありがとうございます"

アクセスをこれから始めようと思っています。
記事を参考に勉強させていただきます。
有用なページありがとうございます!!

2015.01.05 21:55 | URL | #GCA3nAmE [edit]
minami says..."フォームモジュールが現れません"

hatena様
すみません、その①からはじめさせていただいておりますが、
どおしても、何度やっても フォームモジュールが出てきません。
よろしくお願いします。

2015.12.01 20:19 | URL | #ulYx6Mu6 [edit]
minami says...""

すみません、上部に同じ内容の質問を見つけました。申し訳ありません。

2015.12.01 22:08 | URL | #- [edit]

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/186-94ae4bc9
カレンダーコントロール風 無駄コード味
MicrosoftのサイトでAccess2010での変更点という ページがあったので何気なく見ていると・・・ "Microsoft カレンダー コントロールは使用できなくなりました" という一文が・・・( ̄∇ ̄;)!! 個人的に便...
該当の記事は見つかりませんでした。