一回も披露したことのない豆知識

サンプルソースの「debug.print」の部分を「セルに記載」に変更したいです。

ttps://z1000s.hatenablog.com/entry/2018/05/28/221451
Excelで祝日を取得する方法を記載したブログを拝見しまして、
そのサンプルには(転記となりますが)

「祝日及び祝日名を取得する」
Public Sub Test2(ByVal lYear As Long)
(中略)
For i = 0 To UBound(dt)
Debug.Print dt(i), cnh.getNationalHolidayName(dt(i))
Next i
Set cnh = Nothing
End Sub

というコードがあり、イミディエイトの出力結果では正常に実行されます。
これをdebug.pintではなく直接セル(例えばB3以降に1レコード1行ずつ)に
出力させたいのですが、どのように行えばいいでしょうか。
("debug.print"を"Print"

お手数ですがご教授の程、宜しくお願いいたします。

A 回答 (2件)

セルの値に代入すると考えればいいのです。


例えば、Sheets(1)のB3以降に入力したいのであれば
>Debug.Print dt(i), cnh.getNationalHolidayName(dt(i))

Sheets(1).Cells(3+i,2)= dt(i), cnh.getNationalHolidayName(dt(i))
とするだけです。
dt(i)と cnh.getNationalHolidayName(dt(i))を別のセルに分けたいのであれば、
Sheets(1).Cells(3+i,2)= dt(i)
Sheets(1).Cells(3+i,3)= cnh.getNationalHolidayName(dt(i))
のようにすることもできます。
また、対象セルの指定方法には「Range(”B3”)」のように指定することも可能ですが、私はCellsの方が整数型をそのまま使用できるので好きです。しかし、B列が2列目、C列が3列目と変換しないといけないのが難点です。
    • good
    • 1
この回答へのお礼

回答頂きありがとうございます。
ご指摘頂いた手法で無事に表示する事ができました!

お礼日時:2019/04/25 17:00

こんにちは



例えば、出力先の初期値として
 Set outCell = Range("B3")
等としておいて、出力ループ内で
 outCell.Value = dt(i)
 outCell.Offset(0,1).Value = cnh.getNationalHolidayName(dt(i))
 Set outCell = outCell.Offset(1)
のような感じにしておけば、シートに順に出力されると思います。

ただし、既存の祝日関連のソフトは、新元号に伴い将来分に関しては正しい処理ができないと思いますけれど・・・
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A