メモ Excel VBA 基礎 罫線(Border)
Range.Borders でセルの罫線を扱う。
Range("セル範囲").Borders.プロパティ = 設定値
もしくは、
Range("セル範囲").Borders(Index).プロパティ = 設定値
Indexの中身
xlDiagonalDown | 範囲内の各セルの左上隅から右下への罫線 |
xlDiagonalUp | 範囲内の各セルの左下隅から右上への罫線 |
xlEdgeBottom | 範囲内の下側の罫線 |
xlEdgeLeft | 範囲内の左端の罫線 |
xlEdgeRight | 範囲内の右端の罫線 |
xlEdgeTop | 範囲内の上側の罫線 |
xlInsideHorizontal | 範囲外の罫線を除く、範囲内のすべてのセルの水平罫線 |
xlInsideVertical | 範囲外の罫線を除く、範囲内のすべてのセルの垂直罫線 |
Range("セル範囲").borders.プロパティとした場合は、xlEdgeBottom, xlEdgeLeft, xlEdgeRight, xlEdgeTop, xlInsideHorizontal, xlInsideVerticalこれらすべてに同一の設定をしたことになる。
Borders のプロパティ
LineStyle | 罫線の種類 | xlNone または xlLineStyleNone | なし |
xlContinuous | 実線 | ||
xlDash | 破線 | ||
xlDashDot | 一点鎖線 | ||
xlDashDotDot | ニ点鎖線 | ||
xlDot | 点線 | ||
xlDouble | 2 本線 | ||
xlLineStyleNone | 線なし | ||
xlSlantDashDot | 斜破線 | ||
Color | 罫線の色 | RGB値を表す長整数 | |
ColorIndex | 罫線の色 | 1~56 | 2003までの56色カラーパレットのインデックス 何色か分かりづらいのでColorを使ったほうが良い |
Weight | 罫線の太さ | xlHairline | 非常に細い線 (最も細い罫線) |
xlMedium | 普通 | ||
xlThick | 太線 (最も太い罫線) | ||
xlThin | 細線 |
罫線をもう一つの方法
Range.BorderAroundメソッド
外枠に対して一度に罫線を引く。
ーーーーーーーーーーーーーーーーーーー
Sub work()
Range("B2:D4").BorderAround LineStyle:=xlContinuous, Weight:=xlMedium, Color:=vbBlack
End Sub
ーーーーーーーーーーーーーーーーーーー
ーーーーーーーーーーーーーーーーーーー
Sub work2()
Range("B6:D8").Borders.LineStyle = xlContinuous
Range("B6:D8").BorderAround Weight:=xlThick
End Sub
ーーーーーーーーーーーーーーーーーーー
一か所ずつ罫線を引くより、一度にまとめて記述した方が処理速度が速いらしい。
メモ Excel VBA 基礎 配置.Alignment フォント,font 塗りつぶし,Interior
セル内での値を表示する位置を指定する。
横位置の指定(センター)
Range("セル範囲").HorizontalAlignment = xlCenter
縦位置の指定(左揃え)
Range("セル範囲")VerticalAlignment = xlLeft
セルの結合
Range("セル範囲").MargeCells = True
または
Range("セル範囲").Marge
セルで表示する文字のフォントを指定する。
色定数
Range("セル範囲").Font .Color = vbRed '(赤)
Range("セル範囲").Font .Color = vbBlack '(黒)
Range("セル範囲").Font .Color = vbWhite '(白)
*他の色もある
RGB関数
red, green, blue それぞれの数値を0~255で指定
Range("セル範囲").Font .Color = RGB(255, 0, 0) '(赤)
Range("セル範囲").Font .Color = RGB(0, 0, 0) '(黒)
Range("セル範囲").Font .Color = RGB(255, 255, 255) '(白)
色の指定を戻す
Range("セル範囲").Font.ColorIndex = xlAutomatic
指定するセルを塗りつぶす。
色定数
Range("セル範囲").Interior .Color = vbRed '(赤)
Range("セル範囲").Interior .Color = vbBlack '(黒)
Range("セル範囲").Interior .Color = vbWhite '(白)
RGB関数
red, green, blue それぞれの数値を0~255で指定
Range("セル範囲").Interior .Color = RGB(255, 0, 0) '(赤)
Range("セル範囲").Interior .Color = RGB(0, 0, 0) '(黒)
Range("セル範囲").Interior .Color = RGB(255, 255, 255) '(白)
塗りつぶしなし
Range("セル範囲").Interior .ColorIndex = xlNone
メモ Excel VBA 基礎 セルの書式(表示形式,NumberFormatLocal)
マクロでの表示形式の指定
Range.NumberFormatLocal = "表示書式指定文字"
Range.NumberFormatLocal = "@" 文字列
Range.NumberFormatLocal = "0.00" 小数点2桁固定
Range.NumberFormatLocal = "yyyy/mm/dd" 日付 月と日は2桁
書式指定文字 | 説明 |
G/標準 | 標準の表示形式です。 |
_(アンダーバー) | _(アンダーバー)に続く文字の幅だけ文字間隔を空けることができます。 |
" | 「"」で囲まれた文字列を表示します。 |
@ | 入力値を文字列としてそのまま表示します。 |
# | 小数点のいずれの側でも表示形式の # 記号の数より少ない場合に 0 は表示されません。 |
0 | 数値の桁数が表示形式の 0 の桁数より少ない場合に、表示形式の桁まで 0 が付加されます。 |
? | 有効桁以外の 0 にスペースが挿入されるため、列内で小数点の位置が整列されます。 |
. (ピリオド) | 数値に小数点を表示します。 |
,(カンマ) | 数値に桁区切り記号を表示します。 |
yy | 年を2桁の数値で表示します。 |
yyyy | 年を4桁の数値で表示します。 |
g | 元号のアルファベット1文字が表示されます。M,T,S,Hが表示できます。 |
gg | 元号の1文字が表示されます。明,大,昭,平 |
ggg | 元号が表示できます。明治,大正,昭和,平成 |
e | 年数が1桁で表示されます。 |
m | 月数を表示します。1~12が表示できます。 |
mm | 01~12が表示できます。1~9は01~09と0付で表示されます。 |
mmm | Jan~Dec |
mmmm | January~December |
mmmmm | J~D頭文字が表示されます。 |
d | 日数を表示します。1~31が表示できます。 |
dd | 01~31が表示できます。 |
ddd | Sun~Sat |
dddd | Sunday~Saturday |
aaa | 日~土 |
aaaa | 日曜日~土曜日 |
h | 時を表示します。0~23が表示できます。 |
hh | 00~23が表示できます。 |
m | 分を表示します。0~59が表示できます。 |
mm | 00~59が表示できます。 |
s | 秒を表示します。0~59が表示できます。 |
ss | 00~59が表示できます。 |
[h] | 24時を超える時間を表示します。 |
[m] | 60分を超える分を表示します。 |
[s] | 60秒を超える秒を表示します。 |
一度設定したら変更することがないのなら、マクロではなくシートにあらかじめ設定しておいたほうが効率的。
マクロで書式を指定するのは、特殊な部分だけ。
最後にLocalがつかない、NumberFormatというプロパティもある。
同じ書式指定文字でも表示に違いがでる場合がある。
違いはPC環境に依存するかどうか。
Localと付くものは、PC環境に依存する設定を有効にする場合に使用する。
基本はNumberFormatLocalを使用すればいいらしい。
メモ Excel VBA 基礎 セル・行・列の削除・挿入
単一セル、または複数セルの削除・挿入について
セルの削除
左方向にシフト
ーーーーーーーーーーーーーーーーーーー
Cells(行,列).Delete Shift:=xlToLeft
ーーーーーーーーーーーーーーーーーーー
上方向にシフト
ーーーーーーーーーーーーーーーーーーー
Cells(行,列).Delete Shift:=xlUp
ーーーーーーーーーーーーーーーーーーー
行全体(指定セルが含まれる行全体)
ーーーーーーーーーーーーーーーーーーー
Cells(行,列).EntireRow.Delete
ーーーーーーーーーーーーーーーーーーー
列全体(指定セルが含まれる列全体)
ーーーーーーーーーーーーーーーーーーー
Cells(行,列).EntireColumn.Delete
ーーーーーーーーーーーーーーーーーーー
セルの挿入
右方向にシフト
ーーーーーーーーーーーーーーーーーーー
Cells(行,列).Insert Shift:=xlToRight
ーーーーーーーーーーーーーーーーーーー
下方向にシフト
ーーーーーーーーーーーーーーーーーーー
Cells(行,列).Insert Shift:=xlToDown
ーーーーーーーーーーーーーーーーーーー
行全体(指定セルが含まれる行全体)
ーーーーーーーーーーーーーーーーーーー
Cells(行,列).EntireRow.Insert
ーーーーーーーーーーーーーーーーーーー
列全体(指定セルが含まれる列全体)
ーーーーーーーーーーーーーーーーーーー
Cells(行,列).EntireColumn.Insert
ーーーーーーーーーーーーーーーーーーー
Shift:= は省略可能だが、必ず指定するべき。
省略した場合、選択セル範囲の形によって自動で判定される。
行の削除
ーーーーーーーーーーーーーーーーーーー
Rows(行位置).Delete
ーーーーーーーーーーーーーーーーーーー
行の挿入
ーーーーーーーーーーーーーーーーーーー
Rows(行位置).Insert
ーーーーーーーーーーーーーーーーーーー
上記はCells(行,列).EntireRowと同じ
列の削除
ーーーーーーーーーーーーーーーーーーー
Columns(行位置).Delete
ーーーーーーーーーーーーーーーーーーー
列の挿入
ーーーーーーーーーーーーーーーーーーー
Columns(行位置).Insert
ーーーーーーーーーーーーーーーーーーー
上記はCells(行,列).Entirecolumnと同じ
書き方はわかったけど、どうゆうときに使うのだろう。。。
メモ Excel VBA 基礎 ブック・シートの選択、セル・行・列の選択
アクティブブック、アクティブシート、アクティブセルとは
文字を打ち、Enterキーを押したときに入力されるブックのシートのセル。
=アクティブブックのアクティブシートのアクティブセル
アクティブセルと選択セルは別物。
アクティブセルは常に1つ。
選択セルは複数選択できる。
A1~B5を選択したときのアクティブセルはA1。
選択セルはA1~B5の10個のセル。
セルの選択
Range("セル番地").Select
もしくは、
Cells(行,列).Select
セルをアクティブにする
Range("セル番地").Activate
もしくは、
Cells(行,列).Activate
SelectとActivateは、複数セルを選択している場合に違ってくる。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
行の選択
Rows(行位置).Select
列の選択
Columns(列位置).Select
メモ Excel VBA 基礎 メッセージボックス(InputBox関数)
メッセージとテキストボックスを表示。
ユーザが入力した文字列を入手できる。
メッセージのみを表示する場合
ーーーーーーーーーーーーーーー
Sub work()
Dim strIn As String
strIn = InputBox("何か入力してください")
End Sub
ーーーーーーーーーーーーーーー
複数行で表示する場合
ーーーーーーーーーーーーーーー
Sub work2()
Dim strIn As String
strIn = InputBox("何か入力してください。" & vbLf & vbLf & "入力サンプルをここに書いてください。")
End Sub
ーーーーーーーーーーーーーーー
メッセージ、タイトル、既定値を設定した場合。
ーーーーーーーーーーーーーーー
Sub work3()
Dim strIn As String
strIn = InputBox("何か入力してください", "ユーザー入力", "規定文字")
End Sub
ーーーーーーーーーーーーーーー
何も入力されなかったか、「キャンセル」ボタンが押された場合の対処。
ーーーーーーーーーーーーーーー
Sub work4()
Dim strIn As String
strIn = InputBox("何か入力してください。", "タイトル", "ここに入力")
If strIn = "" Then
MsgBox "何も入力されていません。"
End If
End Sub
ーーーーーーーーーーーーーーー
メモ Excel VBA 基礎 メッセージボックス(MsgBox関数)
メッセージを表示するダイアログボックス(小さな画面)を表示する。
「はい」「いいえ」や「OK」「CANCEL」等を選択し、選択結果を受け取ることもできる。
「できました」というメッセージを表示する。
ーーーーーーーーーーーーーーー
Sub work()
MsgBox "できました"
End Sub
ーーーーーーーーーーーーーーー
「できました」「素晴らしい」というメッセージを改行して表示する。
ーーーーーーーーーーーーーーー
Sub work2()
MsgBox "できました" & vbLf & "素晴らしい"
End Sub
ーーーーーーーーーーーーーーー
タイトルを表示する。
ーーーーーーーーーーーーーーー
Sub work3()
MsgBox "できました" , vbOKOnly, "タイトル"
End Sub
ーーーーーーーーーーーーーーー
「完了?」というメッセージを表示し、「Yes」が押されると「完了している」、「No」が押されると「完了していない」というメッセージを表示する
ーーーーーーーーーーーーーーー
Sub work4()
Dim rtn As Integer
rtn = MsgBox("完了?", vbYesNo + vbQuestion + vbDefaultButton2, "確認")
Select Case rtn '押されたボタンの確認
Case vbYes
MsgBox "完了している"
Case vbNo
MsgBox "完了していない"
End Select
End Sub
ーーーーーーーーーーーーーーー