- ベストアンサー
EXCEL VBAで日報作成したい
- EXCEL VBAを使って日報を作成する方法について教えてください。
- 具体的には、行を追加する方法とカレンダーを作成する方法について知りたいです。
- EXCEL2013を使用しています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
変数の宣言もエラー処理もない手抜き版ですが、こんな感じでカレンダー作成できます。 Sub MakeCalendar() '現在の情報をクリア nLastRow = Range("C5").End(xlDown).Row Range("B5:F" & nLastRow).ClearContents '一ヶ月分ループを回して日と曜日をセルに入れる dStart = DateSerial(Year(Now()), Range("A5"), 1) '対象月の1日 For i = 1 To Day(DateSerial(Year(Now()), Range("A5") + 1, 1) - 1) Cells(i + 4, 2) = i Cells(i + 4, 3) = Format(dStart + i - 1, "aaa") Next i End Sub
その他の回答 (2)
- mt2008
- ベストアンサー率52% (885/1701)
ボタンは1つ1つがフォームコントロールやActiveXコントロールになるので、「行追加」のボタンがどんどん増えていくのはお勧めしません。 ボタンは1つにして、選択セルの下に1行追加されるようにした方が良いと思います。 Sub 行追加() nRow = ActiveCell.Row If nRow < 5 Then Exit Sub '選択セルが4行目より上なら終了 Rows(nRow + 1).EntireRow.Insert Range(Cells(nRow + 1, 3), Cells(nRow + 1, 6)).Value = Range(Cells(nRow, 3), Cells(nRow, 6)).Value End Sub 「カレンダー作成」ボタンを押下した時の挙動についてはもう少し明確にしましょう。 ・年は今現在の年を使用で良いの? ・開始終了時刻は10:00、11:00固定? ・F列のデータはクリア?
補足
FEX2053 さん、何度も申し訳ございません。 そしてご連絡ありがとうございます! 詳細なロジックのご説明ありがとうございます!! カレンダー作成は ・年は今現在の年でOKです ・開始終了時刻はクリアしたいです ・F列のデータもクリアしたいです 説明がたりず大変申し訳ございませんでした。 何度も本当に申し訳ございませんが、何卒よろしくお願い致します。
- FEX2053
- ベストアンサー率37% (7992/21376)
一言だけ。 ボタンは作るのがめんどくさいので、「カーソルのある行の下に 行追加」と方針を変えて、「カレンダー作成」ボタンと「行追加」 ボタンを並べる方が簡単ですよ。 それでオッケーなら、行を挿入するのは Selection.EntireRow.Insert の1行で済んでしまいます。まあ、これだけじゃ色々な設定が コピーできてないですけどね。発想はそういうだけで済みます。
補足
FEX2053 さん早速のご連絡ありがとうございます! ご指摘いただきましたカレンダー作成」ボタンと「行追加」ボタンを並べる仕様でぜんぜん問題ありません。 で、このときのカレンダーと行追加のロジックのすいません、イメージが出来ないのです・・ お手数ですが教えていただけませんでしょうか? よろしくお願い致します。
お礼
FEX2053 さん、ご連絡ありがとうございます! 何度もありがとうございます!! ご教授いただきましたロジックで行追加、カレンダー作成両方とも私がやりたかった通り完璧に動作しました!! すごいです。感動しました。^^ この度は本当に本当にありがとうございました!!