サンプルでは、シート1に今日の「日付・時刻・曜日」を入力して、入力されたセル範囲(A1:B3)をクリップボードにピクチャ(画像)としてコピーし、新規に追加したシートのセル(C5)に貼り付けています。
シート1には、次のように入力されます。
A B
1 日付 1999/8/9 ・・・Date関数で現在の日付
2 時間 14:40:07 ・・・Time関数で現在の時刻
3 曜日 火曜日 ・・・Weekday関数から今日の曜日
シート1のA1:B3までが、ピクチャとして新規シートに貼り付けられますが、「シートの保護」でオブジェクトのみ保護するように設定すれば、ユーザーからの変更が不可能なセルとして利用する事ができます。
●準備●
新規ブックを用意して標準モジュールを挿入し、サンプルマクロを貼り付けてください。
●サンプル●
Sub Sample()
Dim myWeekday As
Integer
Worksheets(1).Activate
'<現在の日付を取得します。>
Range("A1").Value
= "日付"
Range("B1").Value
= Date '←(1)
'<現在の時刻を取得します。>
Range("A2").Value
= "時間"
Range("B2").Value
= Time '←(2)
'<今日の曜日を取得します。>
Range("A3").Value
= "曜日"
myWeekday = Weekday(Date)
'←(3)
'<Weekday関数の戻り値から曜日名を取得します。>
Select Case myWeekday
'←(4)
Case
1
Range("B3")
= "日曜日"
Case
2
Range("B3")
= "月曜日"
Case
3
Range("B3")
= "火曜日"
Case
4
Range("B3")
= "水曜日"
Case
5
Range("B3")
= "木曜日"
Case
6
Range("B3")
= "金曜日"
Case
7
Range("B3")
= "土曜日"
Case
Else
Range("B3")
= "?曜日"
End Select
'<指定セル範囲をクリップボードへピクチャ
(画像)
' としてコピーします。>
Columns("A:B").EntireColumn.AutoFit
ActiveSheet.Range("A1:B3")
_
.CopyPicture
xlScreen, xlBitmap '←(5)
'<新規シートを最後のシートの直後に挿入します。>
Sheets.Add after:=Worksheets(Worksheets.Count)
'<新規シートに貼り付けします。>
ActiveSheet.Paste
Destination:= _
ActiveSheet.Range("C5")
'←(6)
End Sub
●補足説明●
(1)Date関数は、現在のシステム日付を返します。
(2)Time関数は、現在のシステム時刻を返します。
(3)Weekday関数は、指定された日付が何曜日であるかを表す整数の値を返します。
(4)Select Caseステートメントは、複数の条件を繰り返し判断するする場合に、
Ifステートメントよりもシンプルに条件分岐ができます。
<構文>
Select Case testexpression
[Case expressionlist-n
[statements-n]] ...
[Case Else
[elsestatements]]
End Select
testexpression:条件比較する数式または文字列式。
expressionlist-n:比較される値。
statements-n:testexpressionがexpressionlist-nのいずれかと一致するとき実行するステートメント。
elsestatements:testexpressionがCase節のいずれとも一致しないとき、実行するステートメント。
(5)CopyPictureメソッドは、オブジェクトをクリップボードへピクチャ(画像)としてコピーします。
<構文>
expression.CopyPicture(Appearance, Format,Size)
expression:コピーするオブジェクトへの参照を表すオブジェクト式を指定。
Appearance:ピクチャのコピー形式を指定(省略可)。使用できる定数は、XlPictureAppearanceクラスのxlScreen(画面表示にできる限り近い形でコピー)またはxlPrinter(印刷するときと同じ形でコピー)。既定値はxlScreen。
Format:ピクチャの形式を指定(省略可)。使用できる定数は、XlCopyPictureFormatクラスのxlPicture(画像マーカー形式)またはxlBitmap(ビットマップ形式)。既定値はxlPicture。
Size:Chart(グラフ) オブジェクトのときだけ指定(省略可)。使用できる定数は、XlPictureAppearanceクラスのxlScreen(画面表示と同じ大きさでコピー)
またはxlPrinter(プリンタ出力時と同じ大きさでコピー)。既定値はxlPrinter 。
(6)Pasteメソッドは、クリップボードの内容をシートに貼り付けます。
<構文>
expression.Paste(Destination, Link)
expression:対象となるWorksheetオブジェクトを表すオブジェクト式を指定。
Destination:クリップボードからのデータを貼り付けるセル範囲(Rangeオブジェクト)を指定。この引数を省略すると、現在の選択範囲に貼り付けられる。この引数を指定すると、引数Linkは使えない。
Link:貼り付けたデータと元のデータの間にリンクを設定するには、Trueを指定。この引数を指定すると、引数Destinationは指定できない。省略可能で既定値はFalse。