|
|
本章では、ワークブックやシートの操作に関するコードサンプルを例示します。 |
|
|
|
名前またはインデックス番号による参照 |
Workbooks("Book1")
Worksheets("Sheet1")
Worksheets(1) '1番目のシート |
アクティブなオブジェクトの参照 |
ActiveWorkbook.Name
ActiveSheet.Range("A1") |
現在実行中のマクロが記述されているオブジェクトの参照 |
ThisWorkbook.Name
ThisWorkSheet.Range("A1") |
※マクロの中でブックの切り替えを行うようなときには、ActiveWorkbookとThisWorkbookは別のものを指す
※※Worksheetsをsheetsと表現しても良い |
|
|
|
|
|
アクティブにするとは、マウスやキーボードでで「シートを選択する」という操作のことです。
Object.Activate
<記述例>
Worksheets("Sheet1").Activate
Worksheets(1).Activate |
|
|
|
|
|
Name = "ワークシート名"
<記述例>
Worksheets("Sheet1").Name = "月次集計" |
|
|
|
|
|
Activateメソッドと違い、複数のワークシートを選択状態にでき、選択されたシートはすべてアクティブシートになります。
Object.Select(Replace)
<記述例>
Worksheets("Sheet3").Select
<応用例 Sheet3とSheet4を選択して、ワークシートの枠線を消す>
複数のシートを選択するには、Array関数を使用します
Worksheets(Array("Sheet3", "Sheet4")).Select
ActiveWindow.DisplayGridlines = False
|
|
|
|
|
|
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
|
|
|
|
|
|
Worksheets("Sheet1").UsedRange.Clear
|
|
|
|
|
|
Worksheets.Add (Before, After, Count, Type)
<記述例>
Worksheets.Add
Worksheets.Add(After:=Worksheets("Sheet2"))
Set NewWS = Worksheets.Add
Worksheets.Add Count:=3 '3シート追加
最後のシートの前に新しいワークシートを追加する
ActiveWorkbook.Sheets.Add Before:=Worksheets(Worksheets.Count)
|
|
|
|
|
|
'ワークブックが存在するか調べる
Dim wb As Workbook, flag As Boolean
For Each wb In Workbooks
If wb.Name = "Book1.xls" Then ・・・・・・
Next wb
'ワークシートが存在するか調べる
Dim ws As Worksheet, flag As Boolean
For Each ws In Worksheets
If ws.Name = "・・・・・" Then ・・・・・
Next ws |
|
|
|
|
|
object.Delete
<記述例>
Activesheet.Delete
Worksheets("追加シート").Delete
|
|
|
|
|
|
Object.Copy(Before, After)
<記述例>
'ワークシートSheet1をコピーしSheet2にコピーする
Worksheets("Sheet1").Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Worksheets("Sheet2").Select
Cells.Select
Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False,
Transpose:=False '貼り付け
'ブック間でワークシートをコピーする
Workbooks("99-03.xls").Worksheets("Sheet1").Copy After:=Workbooks("Book4.xls").Worksheets("Sheet2")
新しいブックを作成しそこにワークシートSheet1をコピーする
引数「Before」「After」を省略すると、新しいブックが作成されてそこにワークシートがコピーされる。
Worksheets("Sheet1").Copy |
|
|
|
|
|
Sub Forwardsheet()
Dim Maxsheets As Integer
Dim i As Integer
'最大シート数を求める
Maxsheets = ActiveWorkbook.Worksheets.Count
'カレントのシート番号を求める
For i = 1 To Maxsheets
If Worksheets(i).Name = ActiveSheet.Name Then Exit For
Next i
'次の選択可能なシートを求める
For i = i To Maxsheets
If i < Maxsheets Then
If Worksheets(i + 1).Visible = True Then Exit For
End If
Next i
'シートを進める
If i < Maxsheets Then Worksheets(i + 1).Select
End Sub
Sub Backwardsheet()
Dim Maxsheets As Integer
Dim i As Integer
'最大シート数を求める
Maxsheets = ActiveWorkbook.Worksheets.Count
'カレントのシート番号を求める
For i = 1 To Maxsheets
If Worksheets(i).Name = ActiveSheet.Name Then Exit For
Next i
'次の選択可能なシートを求める
For i = i To 1 Step -1
If i > 1 Then
If Worksheets(i - 1).Visible = True Then Exit For
End If
Next i
'シートを戻す
If i > 1 Then Worksheets(i - 1).Select
End Sub |
|
|
|
|
|
Worksheets("Sheet1").Range("A1").Consolidate _
sources:=Array("Sheet2!R1C1:R37C6", "Sheet3!R1C1:R37C6"), _
Function:=xlSum |
|
|
|
|
|
Tate = ActiveCell.Row
Range(Cells(Tate + 1, 1), Cells(Tate + 5, 68)).Select
With Selection.Borders(xlLeft)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlRight)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlTop).LineStyle = xlNone
With Selection.Borders(xlBottom)
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Selection.BorderAround LineStyle:=xlNone |
|
|
|
|
|
DialogSheets("Dialog1").Show
DialogSheets("Dialog1").Hide |
|
|
|
|
|
Object.UsedRange
<記述例>
ActiveSheet.UsedRange.Select |
|
|
|
|
|
Object.Visible = 論理値
<記述例>
Worksheets("Sheet1").Visible = True |
|
|
|
|
|
'A列からF列を順ソートする。ソートキーはA列とB列
Sheets("Sheet1").Select
Columns("A:F").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Key2:=Range("B1"),
_
Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False,
_
Orientation:=xlTopToBottom, SortMethod:=xlPinYin, DataOption1:=xlSortNormal,
_
DataOption2:=xlSortNormal |
|
|
|
|
イベントプロシージャ |
内容 |
Activate |
シートがアクティブになったときに発生します。
構文:Private Sub object_Activate() |
Deactivate |
シートがアクティブでなくなったときに発生します。
構文:Private Sub object_Deactivate() |
Change |
セルが変更された時に発生します。 |
SelectionChange |
選択範囲が変わった時に発生します |
BeforeDoubleClick |
セルがダブルクリックされた時に発生します。 |
BeforeRightClick |
セルが右クリックされた時に発生します。 |
Calculate |
シートが再計算された時に発生します。 |
FollowHyperlink
(Excel2000で追加) |
ハイパーリンクがクリックされた時に発生します。 |
PivotTableUpdate |
ピボットテーブル |
|