オンライン講座 質問と回答
無料・有料のオンライン講座で寄せられたメッセージの一部を紹介致します。
[9588]12ヶ月分のシートを作りそれぞれに日付、曜日等を設定し、土日には色をつける
2018-03-14 18:26:44 受講生さんからの投稿です。
小川先生
御回答頂きましてありがとうございます。
キャストの件了解しました。
また、日付の記載に関してもう一点質問がありますので、ご教授下さい。
日付の記載方法に関しては、ダブルクォートで囲む方法とシャープで囲む方法があるそうですが、
今回のプログラム作製におきまして、当初はシャープで囲んでおりましたが、日付の中に変数を組み込むと
エラーとなってしまうため(Sub test1)、ダブルクォートで囲んだという経緯があります(Sub test2)。
そこでお尋ねしたいのですが、test1のように日付の前後をシャープで囲んだ場合、
その中に変数を組み込んだ書き方というのは出来ないのでしょうか?
仮に、出来ないとするならば、(かなり主観的な考え方になりますが)ダブルクォートで囲んだ方が
扱いやすいのかなという気もします。
逆に、シャープで囲んだ方が良いというメリット等ありましたら、ご教授下さい。
以上、よろしくお願いします。
Option Explicit Sub test1() Dim c As Long Dim d As Date c = 3 d = "#2015/" & c & "/1#" Debug.Print d End Sub Sub test2() Dim c As Long Dim d As Date c = 3 d = "2015/" & c & "/1" Debug.Print d End Sub
[9581]12ヶ月分のシートを作りそれぞれに日付、曜日等を設定し、土日には色をつける
2018-03-13 21:51:35 受講生さんからの投稿です。
小川先生
お世話になっております。
本動画の内容に関して質問がありますので、投稿させて頂きます。
Q1の課題に関して、google等で検索を行い以下のプログラムを作成しました。
(結果に関しては、問題無いと思います。)
Sub rensyu17() Dim cMonth As Long Dim cGyo As Long Dim d As String ' Dim d As Date For cMonth = 1 To 12 cGyo = 2 Sheets.Add After:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = cMonth & "月" Range("A1").Value = "day" Range("B1").Value = "wkday" Range("C1").Value = "todo" Range("D1").Value = "comment" d = "2015/" & cMonth & "/1" Do While Month(d) = cMonth Range("A" & cGyo).Value = d Range("B" & cGyo).Value = WeekdayName(Weekday(d), False) d = DateAdd("d", 1, d) cGyo = cGyo + 1 Loop Columns("A:A").EntireColumn.AutoFit Next End Sub
ここで気になったのが、変数”d”についてです。
この変数dに関しては、日付を格納する変数であるためDate型で宣言するのが妥当と思いましたが、
String型で実行しても問題なく実行できているように思われます。
詳しくは調べていないのですが、文字型を日付型に変換するには、CDate という関数を使うようですが、
本プログラムにおいては、CDateは使用しておりません。
これは、日付に関して、d=”2015/1/1″のような記載をすれば、string型であったとしても、date型として
扱っているということなのでしょうか?
[9555]1枚のシートに1年分または所定の月の分だけのカレンダーを作成する
2018-03-08 22:08:45 受講生さんからの投稿です。
動画を見て、日付に関する関数を復習しました。
・Weekday関数は、指定された日付が何曜日かを数値として返す。
・Weekdayname関数は、指定された数値を曜日に変換した文字列を返す。
(Weekdayname関数は、Weekday関数を組み合わせて使うことがほとんどである。)
また、発展編1のテキストを見て、monthname関数の存在を知りました。
色々な関数を試してマスターしたいと思います。
[9046]1枚のシート内で12ヶ月を横に並べたカレンダーを作成する
2017-10-12 09:29:50 浦山大さんからの投稿です。
おはようございます。
コードの添削、ありがとうございました!
曖昧な部分がクリアになりました。
こういう微妙な部分は、勉強会等に参加させて頂いて、
「いつもひっかかるんですけどどういうことですか?」
「…そんなことか!」
って一つ一つ潰していけると更に伸びそうだなって感じました。
11月or12月に参加したいと考えています。
それまでに発展編1については一通りこなしておきたいと思います!
Option Explicit Sub Yokonarabe() Worksheets("Sheet1").UsedRange.Interior.ColorIndex = xlNone '[*1] Worksheets("Sheet1").UsedRange.ClearContents '[*2] '↓一枚のシートでの話なので、これ不要では? 'ワークシート変数 1枚のシートでも、宣言して明示したほうがいいのかな?ってあいまいでした。 'インデント不正部分は、変数の値を設定する際、 '毎回「1インデント前」にずらしていました(手前側のほうがええのかな?とかそんないい加減なレベルでした)。 'ハナコのステップで作業してたら間違わないような気がします…。 Dim daHiduke As Date Dim cMigi As Long Dim loTitle As Long Dim loYoko As Long daHiduke = #1/1/2015# cMigi = 2 loTitle = -6 loYoko = -4 Do While Year(daHiduke) = 2015 If Day(daHiduke) = 1 Then '↓インデント不正→一つ奥にずらしました loTitle = loTitle + 5 loYoko = loYoko + 5 cMigi = 2 With Range("A1") .Offset(, loTitle + 1).Value = "Date" .Offset(, loTitle + 2).Value = "weekday" .Offset(, loTitle + 3).Value = "memo" .Offset(, loTitle + 4).Value = "comment" .Offset(, loTitle + 2).ColumnWidth = 10.89 .Offset(, loTitle + 3).ColumnWidth = 30 .Offset(, loTitle + 4).ColumnWidth = 20 End With End If Range("A" & cMigi).Offset(, loYoko - 1).Value = daHiduke Range("B" & cMigi).Offset(, loYoko - 1).Value = WeekdayName(Weekday(daHiduke), True) Select Case Range("B" & cMigi).Offset(, loYoko - 1).Value Case Is = "土" Range("A" & cMigi & ":D" & cMigi).Offset(, loYoko - 1).Interior.Color = vbBlue Case Is = "日" Range("A" & cMigi & ":D" & cMigi).Offset(, loYoko - 1).Interior.Color = vbRed End Select '↓インデント不正→一つ奥にずらしました daHiduke = DateAdd("d", 1, daHiduke) cMigi = cMigi + 1 Loop End Sub
[9033]1枚のシート内で12ヶ月を横に並べたカレンダーを作成する
2017-10-11 16:38:06 浦山大さんからの投稿です。
小川先生
お世話になります。
自分で作成してみました。
なんとか、形に出来ました。
しかし、先生のコードと比べると、
・私のは行列指定の変数が3つある→2つに出来る
・もっとすっきりさせられる(offsetの使い方、With文の使い方)
はまだまだだなあ、と感じました。
2週間前は手も足も出なかったので、
やりきれたことは喜ばしかったです。
引き続き、よろしくお願いします!
Sub Yokonarabe() ActiveSheet.UsedRange.Interior.ColorIndex = xlNone ActiveSheet.UsedRange.ClearContents Dim ws As Worksheet Dim daHiduke As Date Dim cMigi As Long Dim loTitle As Long Dim loYoko As Long Set ws = Worksheets("Sheet1") daHiduke = #1/1/2015# cMigi = 2 loTitle = -6 loYoko = -4 Do While Year(daHiduke) = 2015 If Day(daHiduke) = 1 Then loTitle = loTitle + 5 loYoko = loYoko + 5 cMigi = 2 With ws.Range("A1") .Offset(, loTitle + 1).Value = "Date" .Offset(, loTitle + 2).Value = "weekday" .Offset(, loTitle + 3).Value = "memo" .Offset(, loTitle + 4).Value = "comment" .Offset(, loTitle + 2).ColumnWidth = 10.89 .Offset(, loTitle + 3).ColumnWidth = 30 .Offset(, loTitle + 4).ColumnWidth = 20 End With End If ws.Range("A" & cMigi).Offset(, loYoko - 1).Value = daHiduke ws.Range("B" & cMigi).Offset(, loYoko - 1).Value = WeekdayName(Weekday(daHiduke), True) Select Case ws.Range("B" & cMigi).Offset(, loYoko - 1).Value Case Is = "土" ws.Range("A" & cMigi & ":D" & cMigi).Offset(, loYoko - 1).Interior.Color = vbBlue Case Is = "日" ws.Range("A" & cMigi & ":D" & cMigi).Offset(, loYoko - 1).Interior.Color = vbRed End Select daHiduke = DateAdd("d", 1, daHiduke) cMigi = cMigi + 1 Loop End Sub
[8917]1枚のシート内で12ヶ月を横に並べたカレンダーを作成する
2017-09-23 18:09:10 浦山大さんからの投稿です。
ここまでは動画見ながらですがやりきりました。
そして、カレンダーは一人でやりきるにはまだ自分のレベルが追いついていないなと感じました。
動画や、発展編で新しく教わった知識を繰り返した上で、
実力をつけてから再度チャレンジしたいと思います。
このあたりまでサラサラ書けてくると応用範囲がまた一気に広がりそうですね(*^^*)
[7471]1枚のシート内で12ヶ月を横に並べたカレンダーを作成する
2017-01-04 07:23:26 平吹 敦史さんからの投稿です。
小川先生
お世話になっております。
素朴な疑問ですが、月ごとにsheet分けしたカレンダーを作成したのであれば、それをコピーして、
同一シート内に張り付けるマクロをつくれば、もっと簡単に横に並べるカレンダーが作れるのでは?
と、思ってつくりました。
その後、先生の解説動画を見たら、最初から、横に並べるカレンダーを作り始めたので、
どっちかを最初につくれば、どっちかはコピーでいけるのかな?とも思いました。
(どっちかとは、月別sheetが先か横並びが先かという意味です。)
ただ、DPRの考え方でいくと、Dはあくまで最初につくった縦に長い年間カレンダーであり、
月別のsheetにしたのは、Rなので、そこからRをつくるのは良くない、という考え方になる、
ということでいいのでしょうか?
平吹敦史
[7470]1枚のシート内で12ヶ月を横に並べたカレンダーを作成する
2017-01-04 07:04:36 平吹 敦史さんからの投稿です。
お世話になっております。
動画の最後で、カレンダーマクロのfileをお渡しする、とあったのですが、そのfileはどこから、
入手すればいいのでしょうか?
発展編1の既入手済みのfileも調べましたが、それらしきfileはありませんでした。
すみませんが、教えていただければと思います。
平吹 敦史
[5905]1枚のシート内で12ヶ月を横に並べたカレンダーを作成する
2016-03-07 13:54:28 tomoki1105さんからの投稿です。
小川先生
いつもお世話になっております。
5:35でおっしゃっていた、Offsetの変数値設定の裏技ですが、もし良ければ教えて頂けますか??
各講座ごとのメッセージを見る場合はこちら
-
▶ITセンスがよくなるエクセル講座
(この講座の詳細はこちら) -
▶Windowsとエクセルの基礎知識
(この講座の詳細はこちら) -
▶「Windows 7」7つの設定
(この講座の詳細はこちら) -
▶いまさら聞けない!タイピングスピードをあげる方法
(この講座の詳細はこちら) -
▶エクセルマクロ・VBA導入編
(この講座の詳細はこちら) -
▶エクセル仕事を劇的に楽にする「DPRフレームワーク」
(この講座の詳細はこちら) -
▶動画デモ「エクセルマクロ実践的活用例」
(この講座の詳細はこちら) -
▶エクセル、エクセルマクロよもやま話
(この講座の詳細はこちら) -
▶スピード3倍を目指すタイピング講座
(この講座の詳細はこちら) -
▶エクセルマクロを書くときによくある問題とその対処法
(この講座の詳細はこちら) -
▶エクセルマクロ・VBA基礎編
(この講座の詳細はこちら) -
▶エクセルマクロ・VBA基礎編フォローアップ ベーシック
(この講座の詳細はこちら) -
▶エクセルマクロ・VBA基礎編フォローアップ アドバンスド
(この講座の詳細はこちら) -
▶演習「インターネットエクスプローラを使って取得した表の中身を解析する」
(この講座の詳細はこちら) -
▶実践添削事例-パソコンスクールのシフト表・予約フォーム生成マクロ
(この講座の詳細はこちら) -
▶エクセルマクロ・VBA発展編1
(この講座の詳細はこちら) -
▶エクセルマクロ・VBA発展編1フォローアップミニセミナー
(この講座の詳細はこちら) -
▶発展編1 フォローメールセミナー
(この講座の詳細はこちら) -
▶解説「伝票作成マクロ」
(この講座の詳細はこちら) -
▶解説「カレンダー作成マクロ」
(この講座の詳細はこちら) -
▶イベントとフォーム講座プレセミナー
(この講座の詳細はこちら) -
▶エクセルマクロ「イベントとフォーム」講座
(この講座の詳細はこちら) -
▶イベントとフォーム講座演習
(この講座の詳細はこちら) -
▶エクセルマクロ・VBA発展編2
(この講座の詳細はこちら) -
▶エクセルVBA外部連携講座
(この講座の詳細はこちら) -
▶エクセルマクロVBA「Web連携」
(この講座の詳細はこちら) -
▶「エクセルマクロ公開添削会」
(この講座の詳細はこちら) -
▶完全解説「アプリケーション作成講座」その1
(この講座の詳細はこちら) -
▶完全解説「アプリケーション作成講座」その2
(この講座の詳細はこちら) -
▶完全解説「アプリケーション作成講座」その3
(この講座の詳細はこちら) -
▶サラリーマンで年収1,000万円を目指せ!ジョイントセミナー講義録
(この講座の詳細はこちら) -
▶MindManager これ一冊でいますぐ上級者
(この講座の詳細はこちら) -
▶[ダイジェスト版] イヤでもWindowsとエクセルの操作が早くなるワークショップ
(この講座の詳細はこちら) -
▶[ライブ版] イヤでもWindowsとエクセルの操作が早くなるワークショップ
(この講座の詳細はこちら) -
▶[心理学パート]イヤでも身体から力が抜けて仕事が楽になるワークショップ
(この講座の詳細はこちら) -
▶[ボディワークパート]イヤでも身体から力が抜けて仕事が楽になるワークショップ
(この講座の詳細はこちら) -
▶イヤでも思考が整理されて文章作成が早くなるワークショップ
(この講座の詳細はこちら) -
▶エクセルVBAでのシステム開発・保守を低コストで行うためのライブラリ “dLib for Excel VBA”
(この講座の詳細はこちら) -
▶ショートカットってすごいよ!
(この講座の詳細はこちら)
まずはここから!スマホでも学べる無料動画講座
今なら先着30名限定で無料!定価4,800円の、初心者のためのエクセルマクロ動画講座。- Excel 97~Excel 2016まですべて対応。動画本数20本、総再生時間2時間44分53秒。
- PC, Mac, iPhone, iPad, Androidのお好みの環境で、いつでも好きなときに学べます。
いますぐ無料で試してください。