質問: vba 表作成したい こんにちわ 別ブックで入力した値から1ヶ月分の日付を表示させていく表を作成したいのです。 すでに表の元は完成していて、31日入るようになっています。 線もひいてあります。 ですが、入力日によっては31日の所もあれば30日の場合もあり、28日の時や29日の時もあると思うんです。 それに対応する形で表に埋まった日付の分だけの表をvbaで作成したいのですが、処理をするたびに随時変更できるのでしょうか?
回答: 引き続き・・・ 日付を表示するエリアに予め枠を作ってください。 それから、29日までの場合は30日から31日までのカラムを非表示する方法が良いと思います。 以下の部分を変更してみてください。 29日まである場合は、30日カラムから31日カラムまで非表示します。 但し、枠(線)の引き方法によって非表示した右カラムの線が表示されない場合がありますので、 その時は、右の線を再度引いてください。 31日まで右の線があると思いますが、32日カラムを選択して罫線の左側を再度設定してください。 wi = 0 exitflg = false wsh2.columns.entirecolumn.hidden = false '入力日付より1ヶ月分の日付と曜日を表示 do while exitflg = false wstr = dateadd("d", wi, wdate) if wstr = wdate2 then exitflg = true if wi < 31 then 'カラム非表示 wsh2.columns(toa1(wi + 11) & ":" & toa1(31 + 11)).entirecolumn.hidden = true end if else '日付設定 wsh2.cells(4, wi + 11) = format(wstr, "mm/dd") '月/日 '曜日設定 wsh2.cells(5, wi + 11) = wval(weekday(wstr) - 1) end if wi = wi + 1 loop end sub public function toa1(byval wno as integer) as string toa1 = trim(cells(1, wno).address(false, false)) toa1 = left(toa1, len(toa1) - 1) end function