|
|
本章では、セルや行・列に関するコードサンプルを例示しています。 |
|
|
|
Cellsプロパティは、セルをセル番地またはセル範囲で指定できる。
Range(セル番地(またはセル範囲))
<記述例>
Range("A1")
Range("A1:A10")
Range("A1","B10","C32")
Range("A" & i)
|
|
|
|
|
Cellsプロパティは、セルを行・列番号で指定できる。
Cells(行番号,列番号)
<記述例>
Cells(1, 1)
Cells(1, 2)
Cells(RowNo, ColNo)
Range(Cells(1,1),Cells(3,4))
Range(Cells(x1,y1),Cells(x2,y2)) |
|
|
|
|
指定したセル位置から、行列方向に指定した数だけずらした位置のセルに、アクセスできるようになる。
Offset(行数, 列数)
<記述例>
Range("A1").Offset(10, 5) |
|
|
|
|
条件に一致するセルを把握することができる。
たとえば、表の中で空白のセルだけを選択して値を代入したい場合などは、このメソッドを使用する。
SpecialCells(Type, Value)
<使用例 表の中の空白のセルだけを選択し「---」と入力する>
Worksheets("Sheet5").Range("B7:F26"). SpecialCells(xlCellTypeBlanks) = "---"
引数 Type
--------------------------------------------
xlCellTypeNotes コメントが含まれているセル
xlCellTypeConstants 定数が含まれているセル
xlCellTypeFormulas 数式が含まれているセル
xlCellTypeBlanks 空の文字列
xlCellTypeLastCell 使われたセル範囲内の最後のセル
xlCellTypeVisible すべての可視セル
引数 Value
-------------------------------------------
xlErrors
xlLogical
xlNumbers
xlTextValues
xlAllFormatConditions
xlSameFormatConditions
引数「Value」は、引数「Type」に 定数「xlCellTypeConstants」 または「xlCellTypeFormulas」を設定した時に使用すると、特定の種類の定数や数式を含むセルを把握することができる。
この引数を省略すると、すべての定数または数式が対象になる。
|
|
|
|
|
指定したセル範囲の列番号や行番号を把握する。
Columns(列番号)
Rows(列番号)
<記述例>
Columns(1)
Columns("A:D").Select
Rows(1)
Rows("5:11")
|
|
|
|
|
Rows(行番号).Select
Selection.Delete Shift:=xlUp |
|
|
|
|
Rows(行番号).Insert Shift:=xlDown |
|
|
|
|
Object.Select
<記述例>
Range("A1:D10").Select
Rows.Select
|
|
|
|
|
セルをマウスでクリックしたのと同じ状態にする。
Object.Activate
<記述例>
Range("A1").Activate
Cells(1,1).Activate
|
|
|
|
|
Object.ActiveCell
<記述例>
ActiveCell = "アクティブ"
ActiveCell.Interior.ColorIndex = 3
|
|
|
|
|
現在選択されているオブジェクトを返す。
Selection.プロパティ(またはメソッド)
<記述例>
Selection.Font.Size = 12 |
|
|
|
|
現在アクティブなウィンドウのワークシートで選択されているセル範囲を返す。
Window.RangeSelection
<記述例>
ActiveWindow.RangeSelection.Address |
|
|
|
|
複数のセル範囲を1つのオブジェクトとして扱う(Unionメソッド)
Union(引数11, 引数2, ...)
<記述例>
Union(Range("B8:B26"), Range("D8:D26")).Font.Bold = True |
|
|
|
|
Object.Name = 文字列
<記述例>
Range("a1:b1").Name = "apple"
Range("apple").Font.Bold = True |
|
|
|
|
With ActiveSheet
If Not .AutoFilterMode Then .Range("A1").AutoFilter ' フィルターのセット
End Wit
Selection.AutoFilter Field:=1, Criteria1:="b" '文字列"b"の行を選択 |
|
|
|
|
If AutoFilterMode Then AutoFilterMode = False |
|
|
|
|
Const hensu1 As Integer = 21
Const hensu2 As String = "B"
Sheets("Sheet1").Activate
Range("A" & hensu1).Select 'A21
Range(hensu2 & "21").Select 'B21 |
|
|
|
|
セル A1 を最優先させるキー フィールド、セル C1 を 2 番目に優先させるキー フィールドとし、コード順に従って昇順になるように、行単位で並べ替えます。範囲の先頭行も、見出しではなく、データとして扱われます。
Worksheets("Sheet1").Range("A1:G37").SortSpecial _
sortMethod:=xlCodePage, _
key1:=Range("A1"), order1:=xlAscending, _
key2:=Range("C1"), order2:=xlAscending |
|
|
|
|
次の使用例は、Sheet1 のアクティブ セルから 3 列右、3 行下のセルをアクティブにします。
Worksheets("Sheet1").Activate
ActiveCell.Offset(rowOffset:=3, columnOffset:=3).Activate
次の使用例は、Sheet1 で見出し行のあるリストから、見出し行は選択せずに、データ部分だけを選択します。この使用例を実行する前に、リストのいずれかのセルをアクティブにしておいてください。
Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, tbl.Columns.Count).Select |
|
|
|
セル内の氏名の末尾に様を追加する ↑ このページの最初へ |
|
|
Range("A1").Select
Do Until ActiveCell.Value = ""
ActiveCell.Value = ActiveCell.Value & "様"
ActiveCell.Offset(1).Select
Loop |
|
|
|
|
Sheet1 の使用されたセル範囲の列 A、B、および C の数式を計算します。
Worksheets("Sheet1").UsedRange.Columns("A:C").Calculate |
|
|
|
|
'コメントの削除
Worksheets(1).Range("A" & Counter1).ClearComments
'コメントの挿入
Worksheets(1).Range("A" & Counter1).AddComment
Worksheets(1).Range("A" & Counter1).Comment.Visible = False
Worksheets(1).Range("A" & Counter1).Comment.Text Text:="コメント:" & comm |
|
|
|
|
Worksheets("Sheet2").Cells(s2_tates, 14).Interior.ColorIndex = 2 '白色
Worksheets("Sheet2").Cells(s2_tates, 14).Interior.ColorIndex = 3 '赤色
Worksheets("Sheet2").Cells(s2_tates, 14).Interior.ColorIndex = 6 '黄色
Worksheets("Sheet2").Cells(s2_tates, 14).Interior.ColorIndex
= 10 '緑色 |
|
|
|
|
Sheets("Sheet1").Activate
Range("A1:E5").Select
Application.CutCopyMode = False
Selection.Copy
Range("A6:E10").Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=True
*TransposeにTrue を指定すると、貼り付けの際にデータの行と列を入れ替えます。 |
|
|
|
|
Dim stRow, edRow As Integer
Worksheets("Sheet1").Activate
stRow = 3
edRow = 13
Rows("" & stRow & ":" & edRow & "").Select |
|
|
|
|
Dim myRange As Range '項目定義シートの範囲
Set myRange = Sheets(Sheet2).Range(Cells(8, 5), Cells(20, 5))
rlen = Application.Sum(myRange) |
|
|
|
|
'SpecilaCells(xlLastCell)は終端セルではなく、最後に使用されたセルを返す
Dim gyo As Integer
Dim ret As Integer
Worksheets("Sheet1").Activate
gyo = ActiveSheet..Range("A65536").End(xlUp).Row '最後の行から上に向かって空白でないセルを探す
ret = ActiveSheet.Cells.SpecialCells(xlLastCell).Column |
|
|
|
|
Sheet1 で使われたセル範囲の最後のセルを選択します。
Worksheets("Sheet1").Activate
ActiveSheet.Cells.SpecialCells(xlLastCell).Activate |
|
|
|
指定されたセル範囲をコレクション内の他のすべてのワークシートの同じ領域にコピーする |
|
|
指定されたセル範囲をコレクション内の他のすべてのワークシートの同じ領域にコピーする
次の使用例は、Sheet1 のセル範囲 A1:C5 の内容を、Sheet5 および Sheet7 の同じ範囲にも
入力します。
x = Array("Sheet1", "Sheet5", "Sheet7")
Sheets(x).FillAcrossSheets _
Worksheets("Sheet1").Range("A1:C5") |
|
|
|
|
Dim stRow, edRow As Integer
Worksheets("Sheet1").Activate
stRow = Selection.Row
edRow = Selection.Row + Selection.Rows.Count - 1
MsgBox (stRow & "To" & edRow) |
|
|
|
|
Dim stRow, edRow As Integer
Worksheets("Sheet1").Activate
stRow = 3
edRow = 13
Rows("" & stRow & ":" & edRow & "").Select |
|
|
|
|
セル「A1」のフォントを青色にする
Worksheets("Sheet1").Range("A1").Font.ColorIndex = 5
「A1」のフォントを赤色にする
Worksheets("Sheet1").Range("A1").Font.Color = &HFFF
「A1」のフォントをサーモン色に設定する
Worksheets("Sheet1").Range("A1")
_
.Font.Color = RGB(250, 80, 160)
セル「A1」をマジェンタで塗りつぶす
Worksheets("Sheet1").Range("A1")
_
.Interior.ColorIndex = 7
「A1」を黄色で塗りつぶす
Worksheets("Sheet1").Range("A1")
_
.Interior.Color = RGB(255, 255, 0) |
|
|
|
|
Sheets(1).Rows(j).Copy
Sheets(2).Rows(i).PasteSpecial |