- 締切済み
Microsoft Office Excel 出席簿の作り方
マクロ初心者 こんにちは、部活の出席簿を作っているんですけど、IDを入れれば出席簿に○がつくというシステムにする予定ですが、日付によって○をつける場所を変えたいのですが、このようなことはできますか? できればマクロを送ってくれれば助かります。 例えば・・・ 11月30日には(A1)に○をつける 12月1日には(A2)に○をつける このようなマクロです。 どうかご回答よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- dailylab
- ベストアンサー率51% (267/514)
先に言っておきますが、カスタマイズ等は受け付けませんので、あとは自力で頑張ってください。(本職ではないのでツライんですw) あと、質問カテゴリは「デジタルライフ > Macintosh」ではなく「デジタルライフ > ソフトウェア > Office系ソフト」にした方が詳しい方がおられると思います。 とりあえず、エクセルの関数とマクロの組み合わせで素人なりに作ってみました。 とりあえずコピペしてみて ■■■■■■エクセルのシート(CSV)ここから■■■■■■ ,,1,2,3,4,5,6,7,8,9 =today(),,イチロー,ジロー,サブロー,シロー,ゴロー,ロクロー,ナナコ,ハチロウ,キュウちゃん =COUNTA(B:B),11月30日,,,,,,,,, ,12月1日,,,,,○,,,, ■■■■■■エクセルのシートここまで■■■■■■ 内容をコピーして「テキストエディット」にペーストしてフォーマットを標準テキストにして「出欠簿.csv」として保存してください。 そのファイルをエクセルで開いて(A2)セルとB列を日付の書式にしてください ■■■■■■マクロここから■■■■■■ Sub 日付を追加() END_LINE = Range("A3").Value + 3 '(A3)セルには「=COUNTA(B:B)」 'B列は日付の書式 '(A2)セルには「=TODAY()」 Range("A2").Select Selection.Copy Range("B" & END_LINE).Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub Sub 出欠() INPUT_LINE = Range("A3").Value + 2 MEMBER_ID = InputBox("メンバーIDを入力してください") If MEMBER_ID = "" Then Exit Sub MEMBER_ID = MEMBER_ID + 2 Cells(INPUT_LINE, MEMBER_ID) = "○" End Sub ■■■■■■マクロここまで■■■■■■ マクロは今日の日付を追加するもの と ID確認して○をつけるもの の2種類です。 で、(日付を追加)ボタンと、(出欠)ボタンをシートに配置すればできあがりです。 メンバーIDは数字です。 あとはメンバー登録ボタンでも作ればそれっぽくなるかな...
- dailylab
- ベストアンサー率51% (267/514)
あんまり詳しくないです...さらに詳細が不明ですのでとりあえず... 思ったことを書きます。参考になれば幸いです。 まず、今日の日付を新しい行に自動で入力するボタン(マクロ)を作成します。 today関数で今日の日付を表示するセルを用意しておきます。 日付が何列目まで入力されているのかカウントするセル〈例えば =COUNTA(2:2)〉を用意 カウントによって最新行(今日入力すべき行)が特定できますんで、今日の日付の値をソコに代入します。 / メンバーIDの値をExcelの行と同じ値に設定しておけば(最新行,ID)で「○」を付けるX,Y座標が〈(5,4)みたいな感じで〉出ますね あとは「入力」ボタンを押したらInputBox(数値)が出てメンバーIDの入力を求めるようにしておけば... (最新行,メンバーID)の場所に○を付ける事ができる...ハズ
補足
ご回答ありがとうございます。 まだマクロのことを分かっていないので、マクロそのものを送ってくれたら幸いです。 どうぞよろしくお願いします。 例えば・・・↓ Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2007/11/30 ユーザー名 : ***** ' ' ten = InputBox("IDを入力してください") Select Case ten Case 1 MsgBox "=一覧表!G2" Sheets("出席表").Select Range("G7").Select ActiveCell.FormulaR1C1 = "○" Sheets("ターミナル").Select Case 2 MsgBox "" Sheets("出席表").Select Range("G8").Select ActiveCell.FormulaR1C1 = "○" Sheets("ターミナル").Select Case 3 MsgBox "" Sheets("出席表").Select Range("G9").Select ActiveCell.FormulaR1C1 = "○" Sheets("ターミナル").Select Case 4 MsgBox "" Sheets("出席表").Select Range("G10").Select ActiveCell.FormulaR1C1 = "○" Sheets("ターミナル").Select Case 5 MsgBox "" Sheets("出席表").Select Range("G11").Select ActiveCell.FormulaR1C1 = "○" Sheets("ターミナル").Select Case Else MsgBox "IDが違います" End Select End Sub これのどこに入れればよいでしょう。 ごめんなさいめんどくさい事させてしまって;; よろしくお願いします。
- dailylab
- ベストアンサー率51% (267/514)
も・ちょっと説明いただけますでしょうか? 出席簿と言うからには何人もメンバーがいる訳ですよね.. 入力用セルに0001と入れるとAさんの行の今日の日付の列に○が入る 入力用セルに0002と入れるとBさんの行の今日の日付の列に○が入る みたいな感じでいいんでしょうかね?
補足
ご回答ありがとうございます。 InputBoxをSelectとして使った形です。 こんな感じですね↓ ten = InputBox("IDを入力してください") Select Case ten Case 1 MsgBox "=一覧表!G2" Sheets("出席表").Select Range("G7").Select ActiveCell.FormulaR1C1 = "○" Sheets("ターミナル").Select Case 2 MsgBox "" Sheets("出席表").Select Range("G8").Select ActiveCell.FormulaR1C1 = "○" Sheets("ターミナル").Select Case 3 MsgBox "" Sheets("出席表").Select Range("G9").Select ActiveCell.FormulaR1C1 = "○" Sheets("ターミナル").Select Case 4 MsgBox "" Sheets("出席表").Select Range("G10").Select ActiveCell.FormulaR1C1 = "○" Sheets("ターミナル").Select Case 5 MsgBox "" Sheets("出席表").Select Range("G11").Select ActiveCell.FormulaR1C1 = "○" Sheets("ターミナル").Select Case Else MsgBox "IDが違います" End Select End Sub ご返事お願いします。m(_ _)m
お礼
いろいろしていただきありがとうございました。 がんばって完成させることができました。 これも全てdailylabさんのおかげです。 マクロの勉強になりました。 またどこかで・・ ありがとうございました