『時間割くん』には3つのユーザーフォームがあります。 『時間割作成』『週案作成』『単元の追加』の3つです。 全体をここに記載するのは、ちょっと無駄な気がするので、開発顛末の中で紹介した「教科の決定」ボタン(ユーザーフォーム2)、単元の『追加』と『削除』ボタン(ユーザーフォーム3)についてのプログラムを紹介します。そして、新作の「旧バージョンのデータコピー」ボタンのプログラムを追加しました。 「旧バージョンのデータコピー」ボタンのプログラム 「教科の決定」ボタンのプログラム 「単元名のリストアップ」のプログラム(教科の決定ボタンに統合) 「単元の[追加]」ボタンのプログラム 「単元の[削除]」ボタンのプログラム 「旧バージョンのデータコピー」ボタンのプログラムです。 「アップデートマクロ」(2002版に合わせ一部改良) Sub カレントフォルダのファイル名を取得() Dim myMsg As String 'リストアップに少々時間がかかるメッセージ myMsg = MsgBox("しばらくお待ちください", vbInformation + vbOKOnly, "ファイルを検索します…") '処理の間、画面の更新をしない Application.ScreenUpdating = False Dim myPath As String Dim myFName As String Dim FCnt As Integer Dim mystr, myc As Integer Dim myf, mys As String 'アクティブブックとシート名の取得 myf = ActiveWorkbook.Name mys = ActiveSheet.Name 'リストボックスに表示されるデータのリセット myc = 0 Do While Worksheets(mys).Cells(myc + 1, 3) <> "" Worksheets(mys).Cells(myc + 1, 3).ClearContents myc = myc + 1 Loop '<時間割くん最新版をアクティブにしてフォルダ名を取得します。> Workbooks(myf).Activate myPath = ActiveWorkbook.Path '<現在アクティブなブックのフォルダに変更します。> ChDir myPath '<取得ブック数をカウントするための変数を初期化します。> FCnt = 0 '<カレントフォルダ内の最初のExcelブックを取得します。> myFName = Dir(myPath & "\時間割くん2002*.xls") mystr = Len(myFName) '<Excelブックが取得できた場合。> If myFName <> "" Then '<取得ブック数をカウント> FCnt = FCnt + 1 '<取得したブック名をO列にセットします。> Cells(FCnt, 15).Value = Left(myFName, mystr - 4) '<1件目以降のブックを取得します。> Do '<次のブックを取得します。> myFName = Dir() mystr = Len(myFName) '<取得できた場合。> If myFName <> "" Then '<取得したブック名をO列にセットします。> FCnt = FCnt + 1 Cells(FCnt, 15).Value = Left(myFName, mystr - 4) Else '<ブック名の取得が終了したので繰り返し処理を抜けます。> Exit Do End If Loop End If '処理の間、画面の更新をしないの終わり Application.ScreenUpdating = True 'ユーザーフォームを表示する UserFormUP.Show 'ファイルの検索終了 End Sub 「ファイルを開いてコピーするマクロ」 Private Sub CommandButton1_Click() Dim I As Integer Dim J As String Dim myMsg As String Dim mykokyaku As String Dim myChkBook As Workbook Dim myPath As String Application.ScreenUpdating = False If UserFormUP.ListBox1.Text = "" Then myMsg = MsgBox("ファイルを選択してから「データコピー」ボタンをクリックしてください!", vbCritical + vbOKOnly, "ファイル選択ミスです!") Else Dim mys As String Dim myf As String Dim myb As String myb = ActiveWorkbook.Name mys = ActiveSheet.Name myf = UserFormUP.ListBox1.Text myPath = ActiveWorkbook.Path 'ファイルを開く myMsg = MsgBox("ファイル名" & myf & "のデータをコピーします。「データコピー完了」までしばらくお待ちください。", Buttons:=vbYesNo + vbQuestion, Title:="データコピーの確認") If myMsg = vbYes Then On Error GoTo ErrHdl Set myChkBook = Workbooks(myf) Windows(myb).Activate GoTo UlUf ErrHdl: Workbooks.Open Filename:=(myf & ".xls") Windows(myb).Activate End If UlUf: Windows(myf & ".xls").Activate Sheets("メニュー").Select Range("D23:K26").Select Selection.Copy Windows(myb).Activate Sheets("メニュー").Select Range("D23:K26").Select ActiveSheet.Paste Range("D23").Select Windows(myf & ".xls").Activate Sheets("時数").Select Range("D2:I271").Select Selection.Copy Windows(myb).Activate Sheets("時数").Select Range("D2:I271").Select ActiveSheet.Paste Range("D2").Select Windows(myf & ".xls").Activate Sheets("週案").Select Range("A1:K899").Select Selection.Copy Windows(myb).Activate Sheets("週案").Select Range("A1:K899").Select ActiveSheet.Paste Range("A1").Select Windows(myf & ".xls").Activate Sheets("週案").Select Range("AA1:AK14").Select Selection.Copy Windows(myb).Activate Sheets("週案").Select Range("AA1:AK14").Select ActiveSheet.Paste Range("A1").Select Windows(myf & ".xls").Activate Sheets("リスト").Select Range("A1:D25").Select Selection.Copy Windows(myb).Activate Sheets("リスト").Select Range("A1:D25").Select ActiveSheet.Paste Range("A1").Select Windows(myf & ".xls").Activate Sheets("時間割").Select Range("A1:U34").Select Selection.Copy Windows(myb).Activate Sheets("時間割").Select Range("A1:U34").Select ActiveSheet.Paste Range("A1").Select Windows(myf & ".xls").Activate Sheets("1年").Select Range("A1:R55").Select Selection.Copy Windows(myb).Activate Sheets("1年").Select Range("A1:R55").Select ActiveSheet.Paste Range("A1").Select Windows(myf & ".xls").Activate Sheets("1年").Select Range("A1:R55").Select Selection.Copy Windows(myb).Activate Sheets("1年").Select Range("A1:R55").Select ActiveSheet.Paste Range("A1").Select Windows(myf & ".xls").Activate Sheets("2年").Select Range("A1:R55").Select Selection.Copy Windows(myb).Activate Sheets("2年").Select Range("A1:R55").Select ActiveSheet.Paste Range("A1").Select Windows(myf & ".xls").Activate Sheets("3年").Select Range("A1:R55").Select Selection.Copy Windows(myb).Activate Sheets("3年").Select Range("A1:R55").Select ActiveSheet.Paste Range("A1").Select Windows(myf & ".xls").Activate Sheets("4年").Select Range("A1:R55").Select Selection.Copy Windows(myb).Activate Sheets("4年").Select Range("A1:R55").Select ActiveSheet.Paste Range("A1").Select Windows(myf & ".xls").Activate Sheets("5年").Select Range("A1:R55").Select Selection.Copy Windows(myb).Activate Sheets("5年").Select Range("A1:R55").Select ActiveSheet.Paste Range("A1").Select Windows(myf & ".xls").Activate Sheets("6年").Select Range("A1:R55").Select Selection.Copy Windows(myb).Activate Sheets("6年").Select Range("A1:R55").Select ActiveSheet.Paste Range("A1").Select Windows(myf & ".xls").Activate Range("B3").Select Application.CutCopyMode = False ActiveWindow.Close Unload UserFormUP Workbooks(myb).Worksheets(mys).Activate Application.ScreenUpdating = True myMsg = MsgBox("データのコピー完了しました。", vbInformation + vbOKOnly, "データコピー完了") End If End Sub 「教科の決定」ボタンのプログラムです。 If ComboBox1.Value = "" Then Dim myBtn As Integer Dim myMsg As String, myTitle As String myMsg = "1〜45週の中から選択するか数値を入力してください!" myTitle = "週が1〜45週以外の設定されているか、空欄です!" myBtn = MsgBox(myMsg, vbyesOnly + vbInformation, myTitle) ElseIf Label21.Caption = "" Then myMsg = "週と学年、組を選択して[BOK!]をクリックしてください。" myTitle = "週の日付が、空欄のままです!" myBtn = MsgBox(myMsg, vbyesOnly + vbInformation, myTitle) Else Dim myi As Integer Dim myj As Integer myi = ComboBox1.Value myj = myi * 20 - 17 Worksheets("週案").Select Range("AP3:BI14").Select Selection.Copy Range("D" & myj & ":" & "W" & myj + 11).Select Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False Select Case myi Case 1 To 45 '曜日の設定 Worksheets("週案").Range("A" & myj).Value = Label21.Caption Worksheets("週案").Range("A" & myj + 2).Value = Label22.Caption Worksheets("週案").Range("A" & myj + 4).Value = Label23.Caption Worksheets("週案").Range("A" & myj + 6).Value = Label24.Caption Worksheets("週案").Range("A" & myj + 8).Value = Label25.Caption Worksheets("週案").Range("A" & myj + 10).Value = Label26.Caption Worksheets("週案").Range("S" & myj + 10).Value = "宿 題" '月曜日の週案時間割設定 Worksheets("週案").Range("C" & myj).Value = ComboBox83.Value Worksheets("週案").Range("E" & myj).Value = ComboBox4.Value Worksheets("週案").Range("H" & myj).Value = ComboBox10.Value Worksheets("週案").Range("K" & myj).Value = ComboBox16.Value Worksheets("週案").Range("N" & myj).Value = ComboBox22.Value Worksheets("週案").Range("Q" & myj).Value = ComboBox27.Value Worksheets("週案").Range("T" & myj).Value = ComboBox32.Value '火曜日の週案時間割設定 Worksheets("週案").Range("C" & myj + 2).Value = ComboBox84.Value Worksheets("週案").Range("E" & myj + 2).Value = ComboBox5.Value Worksheets("週案").Range("H" & myj + 2).Value = ComboBox11.Value Worksheets("週案").Range("K" & myj + 2).Value = ComboBox17.Value Worksheets("週案").Range("N" & myj + 2).Value = ComboBox23.Value Worksheets("週案").Range("Q" & myj + 2).Value = ComboBox28.Value Worksheets("週案").Range("T" & myj + 2).Value = ComboBox33.Value '水曜日の週案時間割設定 Worksheets("週案").Range("C" & myj + 4).Value = ComboBox85.Value Worksheets("週案").Range("E" & myj + 4).Value = ComboBox6.Value Worksheets("週案").Range("H" & myj + 4).Value = ComboBox12.Value Worksheets("週案").Range("K" & myj + 4).Value = ComboBox18.Value Worksheets("週案").Range("N" & myj + 4).Value = ComboBox24.Value Worksheets("週案").Range("Q" & myj + 4).Value = ComboBox29.Value Worksheets("週案").Range("T" & myj + 4).Value = ComboBox34.Value '木曜日の週案時間割設定 Worksheets("週案").Range("C" & myj + 6).Value = ComboBox86.Value Worksheets("週案").Range("E" & myj + 6).Value = ComboBox7.Value Worksheets("週案").Range("H" & myj + 6).Value = ComboBox13.Value Worksheets("週案").Range("K" & myj + 6).Value = ComboBox19.Value Worksheets("週案").Range("N" & myj + 6).Value = ComboBox25.Value Worksheets("週案").Range("Q" & myj + 6).Value = ComboBox30.Value Worksheets("週案").Range("T" & myj + 6).Value = ComboBox35.Value '金曜日の週案時間割設定 Worksheets("週案").Range("C" & myj + 8).Value = ComboBox87.Value Worksheets("週案").Range("E" & myj + 8).Value = ComboBox8.Value Worksheets("週案").Range("H" & myj + 8).Value = ComboBox14.Value Worksheets("週案").Range("K" & myj + 8).Value = ComboBox20.Value Worksheets("週案").Range("N" & myj + 8).Value = ComboBox26.Value Worksheets("週案").Range("Q" & myj + 8).Value = ComboBox31.Value Worksheets("週案").Range("T" & myj + 8).Value = ComboBox36.Value '土曜日の週案時間割設定 Worksheets("週案").Range("C" & myj + 10).Value = ComboBox88.Value Worksheets("週案").Range("E" & myj + 10).Value = ComboBox9.Value Worksheets("週案").Range("H" & myj + 10).Value = ComboBox15.Value Worksheets("週案").Range("K" & myj + 10).Value = ComboBox21.Value Worksheets("週案").Range("N" & myj + 10).Value = ComboBox89.Value 'メッセージボックスで確認する myMsg = "週案に日付と教科は入りましたよ!" myTitle = "週案の日付と教科を入力終了" myBtn = MsgBox(myMsg, vbyesOnly + vbInformation, myTitle) 開発顛末に 「単元名のリストアップ」のプログラムです。 '単元名リストアップ Dim myb As Integer Dim myc As Integer Select Case ComboBox2.Value Case 1 To 6 '学年別ワークシート選択 If ComboBox2.Value = "6" Then Worksheets("6年").Select ElseIf ComboBox2.Value = "5" Then Worksheets("5年").Select ElseIf ComboBox2.Value = "4" Then Worksheets("4年").Select ElseIf ComboBox2.Value = "3" Then Worksheets("3年").Select ElseIf ComboBox2.Value = "2" Then Worksheets("2年").Select ElseIf ComboBox2.Value = "1" Then Worksheets("1年").Select End If '教科別表示プログラム myb = 4 For myc = 1 To 36 '高学年の単元表示 If Controls("combobox" & myb).Value = "国語" Then Controls("combobox" & myb + 33).RowSource = ("B3:B55") ElseIf Controls("combobox" & myb).Value = "社会" Then Controls("combobox" & myb + 33).RowSource = ("C3:C55") ElseIf Controls("combobox" & myb).Value = "算数" Then Controls("combobox" & myb + 33).RowSource = ("D3:D55") ElseIf Controls("combobox" & myb).Value = "理科" Then Controls("combobox" & myb + 33).RowSource = ("E3:E55") ElseIf Controls("combobox" & myb).Value = "音楽" Then Controls("combobox" & myb + 33).RowSource = ("F3:F55") ElseIf Controls("combobox" & myb).Value = "図工" Then Controls("combobox" & myb + 33).RowSource = ("G3:G55") ElseIf Controls("combobox" & myb).Value = "家庭" Then Controls("combobox" & myb + 33).RowSource = ("H3:H55") ElseIf Controls("combobox" & myb).Value = "体育" Then Controls("combobox" & myb + 33).RowSource = ("I3:I55") ElseIf Controls("combobox" & myb).Value = "道徳" Then Controls("combobox" & myb + 33).RowSource = ("J3:J55") ElseIf Controls("combobox" & myb).Value = "行事" Then Controls("combobox" & myb + 33).RowSource = ("K3:K55") ElseIf Controls("combobox" & myb).Value = "学活" Then Controls("combobox" & myb + 33).RowSource = ("L3:L55") ElseIf Controls("combobox" & myb).Value = "児童会" Then Controls("combobox" & myb + 33).RowSource = ("M3:M55") ElseIf Controls("combobox" & myb).Value = "クラブ" Then Controls("combobox" & myb + 33).RowSource = ("N3:N55") ElseIf Controls("combobox" & myb).Value = "総合" Then Controls("combobox" & myb + 33).RowSource = ("O3:O55") End If '低学年の単元表示 If Controls("combobox" & myb).Value = "こくご" Then Controls("combobox" & myb + 33).RowSource = ("B3:B65") ElseIf Controls("combobox" & myb).Value = "さんすう" Then Controls("combobox" & myb + 33).RowSource = ("C3:C65") ElseIf Controls("combobox" & myb).Value = "せいかつ" Then Controls("combobox" & myb + 33).RowSource = ("D3:D65") ElseIf Controls("combobox" & myb).Value = "おんがく" Then Controls("combobox" & myb + 33).RowSource = ("E3:E65") ElseIf Controls("combobox" & myb).Value = "ずこう" Then Controls("combobox" & myb + 33).RowSource = ("F3:F65") ElseIf Controls("combobox" & myb).Value = "たいいく" Then Controls("combobox" & myb + 33).RowSource = ("G3:G65") ElseIf Controls("combobox" & myb).Value = "どうとく" Then Controls("combobox" & myb + 33).RowSource = ("H3:H65") ElseIf Controls("combobox" & myb).Value = "がっかつ" Then Controls("combobox" & myb + 33).RowSource = ("I3:I65") ElseIf Controls("combobox" & myb).Value = "じどうかい" Then Controls("combobox" & myb + 33).RowSource = ("J3:J65") ElseIf Controls("combobox" & myb).Value = "ぎょうじ" Then Controls("combobox" & myb + 33).RowSource = ("K3:K65") End If myb = myb + 1 Next myc myb = 89 '土曜4時間目の高学年の単元表示 If Controls("combobox" & myb).Value = "国語" Then Controls("combobox" & myb + 1).RowSource = ("B3:B55") ElseIf Controls("combobox" & myb).Value = "社会" Then Controls("combobox" & myb + 1).RowSource = ("C3:C55") ElseIf Controls("combobox" & myb).Value = "算数" Then Controls("combobox" & myb + 1).RowSource = ("D3:D55") ElseIf Controls("combobox" & myb).Value = "理科" Then Controls("combobox" & myb + 1).RowSource = ("E3:E55") ElseIf Controls("combobox" & myb).Value = "音楽" Then Controls("combobox" & myb + 1).RowSource = ("F3:F55") ElseIf Controls("combobox" & myb).Value = "図工" Then Controls("combobox" & myb + 1).RowSource = ("G3:G55") ElseIf Controls("combobox" & myb).Value = "家庭" Then Controls("combobox" & myb + 1).RowSource = ("H3:H55") ElseIf Controls("combobox" & myb).Value = "体育" Then Controls("combobox" & myb + 1).RowSource = ("I3:I55") ElseIf Controls("combobox" & myb).Value = "道徳" Then Controls("combobox" & myb + 1).RowSource = ("J3:J55") ElseIf Controls("combobox" & myb).Value = "行事" Then Controls("combobox" & myb + 1).RowSource = ("K3:K55") ElseIf Controls("combobox" & myb).Value = "学活" Then Controls("combobox" & myb + 1).RowSource = ("L3:L55") ElseIf Controls("combobox" & myb).Value = "児童会" Then Controls("combobox" & myb + 1).RowSource = ("M3:M55") ElseIf Controls("combobox" & myb).Value = "クラブ" Then Controls("combobox" & myb + 1).RowSource = ("N3:N55") ElseIf Controls("combobox" & myb).Value = "総合" Then Controls("combobox" & myb + 1).RowSource = ("O3:O55") End If '土曜4時間目の低学年の単元表示 If Controls("combobox" & myb).Value = "こくご" Then Controls("combobox" & myb + 1).RowSource = ("B3:B65") ElseIf Controls("combobox" & myb).Value = "さんすう" Then Controls("combobox" & myb + 1).RowSource = ("C3:C65") ElseIf Controls("combobox" & myb).Value = "せいかつ" Then Controls("combobox" & myb + 1).RowSource = ("D3:D65") ElseIf Controls("combobox" & myb).Value = "おんがく" Then Controls("combobox" & myb + 1).RowSource = ("E3:E65") ElseIf Controls("combobox" & myb).Value = "ずこう" Then Controls("combobox" & myb + 1).RowSource = ("F3:F65") ElseIf Controls("combobox" & myb).Value = "たいいく" Then Controls("combobox" & myb + 1).RowSource = ("G3:G65") ElseIf Controls("combobox" & myb).Value = "どうとく" Then Controls("combobox" & myb + 1).RowSource = ("H3:H65") ElseIf Controls("combobox" & myb).Value = "がっかつ" Then Controls("combobox" & myb + 1).RowSource = ("I3:I65") ElseIf Controls("combobox" & myb).Value = "じどうかい" Then Controls("combobox" & myb + 1).RowSource = ("J3:J65") ElseIf Controls("combobox" & myb).Value = "ぎょうじ" Then Controls("combobox" & myb + 1).RowSource = ("K3:K65") End If '朝自習リスト表示 ComboBox70.RowSource = ("P3:P65") ComboBox71.RowSource = ("P3:P65") ComboBox72.RowSource = ("P3:P65") ComboBox73.RowSource = ("P3:P65") ComboBox74.RowSource = ("P3:P65") ComboBox75.RowSource = ("P3:P65") '連絡リスト表示 ComboBox76.RowSource = ("Q3:Q65") ComboBox77.RowSource = ("Q3:Q65") ComboBox78.RowSource = ("Q3:Q65") ComboBox79.RowSource = ("Q3:Q65") ComboBox80.RowSource = ("Q3:Q65") ComboBox81.RowSource = ("Q3:Q65") '宿題リスト表示 ComboBox82.RowSource = ("R3:R65") 'メッセージボックスで確認する myMsg = "リストアップしました。" myTitle = "教科別単元名リストの表示" myBtn = MsgBox(myMsg, vbyesOnly + vbInformation, myTitle) Case Else myMsg = "学年の設定をして[B OK!]ボタンをクリック、教科を設定して[D教科決定]ボタンをクリックしてください。" myTitle = "学年と教科を設定してね!" myBtn = MsgBox(myMsg, vbyesOnly + vbInformation, myTitle) End Select 開発顛末に 単元の追加に使ったプログラムです。 Private Sub CommandButton1_Click() Dim myBtn As Integer Dim myMsg As String, myTitle As String Dim myBtn2 As Integer Dim myMsg2 As String, myTitle2 As String myMsg = "リストに追加しました。" myTitle = "リストの追加" myMsg2 = "リストに既にありますよ!" myTitle2 = "リストの重複" '単元名の検索 Dim myk As Integer If ComboBox1.Value = "国語" Then ComboBox2.RowSource = ("B3:B55") If (ComboBox2.MatchFound = False) Then Range("B65536").End(xlUp).Offset(1).Value = ComboBox2.Value myBtn = MsgBox(myMsg, vbOKOnly + vbInformation, myTitle) ComboBox2.RowSource = ("B3:B55") Else myBtn2 = MsgBox(myMsg2, vbOKOnly + vbInformation, myTitle2) End If ElseIf ComboBox1.Value = "社会" Then ComboBox2.RowSource = ("C3:C55") If (ComboBox2.MatchFound = False) Then Range("C65536").End(xlUp).Offset(1).Value = ComboBox2.Value myBtn = MsgBox(myMsg, vbOKOnly + vbInformation, myTitle) Else myBtn2 = MsgBox(myMsg2, vbOKOnly + vbInformation, myTitle2) End If ElseIf ComboBox1.Value = "算数" Then ComboBox2.RowSource = ("D3:D55") If (ComboBox2.MatchFound = False) Then 〜以下中略〜 ElseIf ComboBox1.Value = "宿題" Then ComboBox2.RowSource = ("R3:R55") If (ComboBox2.MatchFound = False) Then Range("R65536").End(xlUp).Offset(1).Value = ComboBox2.Value myBtn = MsgBox(myMsg, vbOKOnly + vbInformation, myTitle) Else myBtn2 = MsgBox(myMsg2, vbOKOnly + vbInformation, myTitle2) End If 「単元の削除」に使ったプログラムです。 'もしデータがあれば削除する。そうでなければデータなしを表示する If (ComboBox2.MatchFound = True) Then Do Until ActiveCell.Value = ComboBox2.Value ActiveCell.Offset(1).Select Loop ActiveCell.Delete Shift:=xlUp Dim myBtn As Integer Dim myMsg As String, myTitle As String myMsg = "リストから削除しました。" myTitle = "リストの削除" myBtn = MsgBox(myMsg, vbOKOnly + vbInformation, myTitle) Else myMsg = "リストにデータがありません。" myTitle = "リストにデータなし" myBtn = MsgBox(myMsg, vbOKOnly + vbExclamation, myTitle) End If 開発顛末に |
ご質問・ご要望など、メッセージをお気軽に下のフォームにご記入いただき、送信ボタンでお送りください。
また、このページで紹介しているコードにつきましては、細心の注意を払ってはいますが、
運用上いかなる損害が起きても責任を負わないものとします。
商用利用もご遠慮ください。
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します。すべての内容は日本の著作権法及び国際条約によって保護を受けています。
Copyright 2001-2012 H'sFactory. All rights reserved. Never reproduce or
republicate without written permission.
自己紹介へ | 「時間割くん」の使い方へ | 「時間割くん」のダウンロード |
メール |
トップ |