『こんなの無いですよね?』(カレン) A1からA31に日付が入力されてます マクロでその日付を元に自動で元旦とかクリスマスとか建国記念日とか 入るようなマクロって出来るのですか? 出来たら教えてください。  よろしくお願いいたします。 < 使用 Excel:Excel2003、使用 OS:WindowsXP > ---- どこかに、記念日一覧を作成しておけば、関数でできると思います。 (マナ) 2018/04/01(日) 18:45 ---- マナさんのおっしゃるとおりですが、”マクロで”という条件がついてるので、記念日一覧はコード中に用意してもよさそうに思います。 ただ・・・元旦、クリスマスは別にどうってことないですが、建国記念日とか年によって日付が変わってしまうものってわりとめんどくさそうだなぁなんて思ったり・・・・ (もこな2) 2018/04/01(日) 20:08 ---- 解答ありがとうございます 確かに変動する物に対してはむずかしいのですかね 今探しているのですが祝日一覧がどこのシートに有 るのかわからないのですがこのコードを解説してもらいませんか? よろしくお願いいたします。 私にはさっぱり でもどこかに祝日の一覧が有るのですよね? (カレン) 2018/04/01(日) 20:19 ---- Sub 作成() Dim i As Byte Dim D As Byte Dim M As Byte '月入力 M = S3.Cells(14, 6) S1.Cells(2, 2) = M '行事 M = S3.Cells(14, 6) S1.Cells(2, 2) = M For D = 1 To 31 S1.Cells(3, 3 + D) = S4.Cells(D + 1, 58 + M) Next Range("D19").Select (カレン) 2018/04/01(日) 20:28 ---- S4シート?の59〜70列に1年分の行事が記載されている思われます。 (マナ) 2018/04/01(日) 20:43 ---- S4シートですか??? (カレン) 2018/04/01(日) 20:53 ---- S4らしきシートがないのです。 見えなくしてる事はあるのですか? (カレン) 2018/04/01(日) 20:57 ---- こんなマクロではだめですか? 同じシートのD列(日付、E列に行事の一覧を作成しておきます。 Sub test() Range("B1:B31").Formula = "=iferror(vlookup(A1,D:E,2,0),"""")" End Sub (マナ) 2018/04/01(日) 21:03 ---- s4は、オブジェクト名だから msgbox s4.name とすれば出てきますよ? 多分??? (SoulMan) 2018/04/01(日) 21:05 ---- わたしのマクロは年が変わると使えませんでした。 (マナ) 2018/04/01(日) 21:11 ---- で、もし非表示にしてあるのなら、 ⬇を参考にされて表示してみてはどでしょうか? http://officetanaka.net/excel/vba/sheet/sheet06.htm (SoulMan) 2018/04/01(日) 21:13 ---- >S1.Cells(3, 3 + D) = S4.Cells(D + 1, 58 + M) >A1からA31に日付が入力されてます 縦にではなく、横(3行目)に行事を転記していますが、 そのマクロは何なのですか? こうすれば、B列に転記できます。 S1.Cells(D, 2) = S4.Cells(D + 1, 58 + M) (マナ) 2018/04/01(日) 21:17 ---- 隠してはいなかったみたいです シートみつかりました 一覧になっていました 仮にS1をシート名にするにはどう書き換えたらよろしいのでしょうか? シート名は行事にします。 先程のコードを試しましたがエラーになってしまいます。 (カレン) 2018/04/01(日) 21:22 ---- 年間の行事が記載されてそれを横並びのカレンダーに転記しているマクロです (カレン) 2018/04/01(日) 21:23 ---- あぁぁ、普通は、オブジェクト名は、変えないんですけどね プロパティウィンドで変えるんですけどね 別にS4でもいいので、 普通にS4("ほげはほげ).cells とすればいいと思いますけど、 あぁぁ、、パソコン開いた方が早いかなぁ(;_;) わかりますぅ? (SoulMan) 2018/04/01(日) 21:30 ---- 全くの?です (カレン) 2018/04/01(日) 21:36 ---- >A1からA31に日付が入力されてます どこに行事を転記したいのでしょうか? B2セルは月を表示していますよね。 (マナ) 2018/04/01(日) 21:55 ---- あっ、さっきやったらできませんでした( ̄▽ ̄;) すみません。 なので、さっきのは無しでお願いします。 取り敢えず、コードはそのままで、 MsgBox S1.Name MsgBox S3.Name MsgBox S4.Name で、表示される名前を変えたい名前にシートのタブで変えたらいいみたいです。 でも、オブジェクト名を変えるってマニアックな方ですねぇ(笑) 失礼、どうでもいいことでした。すみません。m(__)m 私も、モジュール名は変える癖がありますけど、、、、 (SoulMan) 2018/04/01(日) 21:56 ---- お手数ですが 順番に M = S3.Cells(14, 6) S1.Cells(2, 2) = M この数値の意味をよろしいのでしょうか? 出来たら全部教えてください よろしくお願いいたします (カレン) 2018/04/01(日) 22:01 ---- そもそもの質問がわからなくなりました。 現在のコードで、横に転記できている。 それを縦に転記したいということでしょうか。 (マナ) 2018/04/01(日) 22:08 ---- おぉぉ、閉じちゃったよぉ(笑) さっきのはここがいいみたいです http://thom.hateblo.jp/entry/2015/02/02/061313 まぁ、コードを書く人の癖からすると、 Mは、月で Dは、日でしょうね で、Yがあったら年ですね 多分???? コードを書く人って大体そうですよ? (SoulMan) 2018/04/01(日) 22:10 ---- わかりました ありがとうございました 色々試してみます。 (カレン) 2018/04/01(日) 22:19 ---- Option Explicit Sub 作成() Dim i As Byte Dim D As Byte Dim M As Byte '月入力 '月は、オブジェクトS3のF14 M = S3.Cells(14, 6) 'オブジェクトS1のB2は月 S1.Cells(2, 2) = M '行事 '月は、オブジェクトS3F14 M = S3.Cells(14, 6) 'オブジェクトS1のB2は、月 S1.Cells(2, 2) = M 'Dは多分、Day つまり、日 '日を1から31までループ For D = 1 To 31 'オブジェクトS1のC3から右へ変化するセルは、オブジェクトS4の 58は、BFにM(月)を足したセル S1.Cells(3, 3 + D) = S4.Cells(D + 1, 58 + M) Next Range("D19").Select MsgBox S1.Name MsgBox S3.Name MsgBox S4.Name End Sub こうかな? (SoulMan) 2018/04/01(日) 22:22 ---- お手数お掛けしました。 解説ありがとうございました。 (カレン) 2018/04/01(日) 22:26 ---- もうひとつ教えてください アクティブシートってマクロのコードが書いてあるのですがこれって何ですか? (カレン) 2018/04/01(日) 22:39 ---- アクティブ、定義は、詳しくないけど、 まぁ平く言うと、現在のシートとか、 表示されているシートとか かな? この辺は、ググった方がいいとおもいます (SoulMan) 2018/04/01(日) 22:59 ---- あとはオブジェクト名は変えなくてもシート名で も行けると言うことですよね❓ わからなくなったらまたよろしくお願いします。 (カレン) 2018/04/01(日) 23:21