GEN MUTO'S HOMEPAGE  エクセル大事典  エクセルVBAを極める

エクセルExcel大事典 エクセル大事典TOPページへ
 ■ エクセルVBA中級編−ワークシートを使いこなそう
  ワークシートの操作をマスターしよう!
 
■ ワークシートの操作をマスターしよう!

前回は、ワークシートを参照する方法とワークシートの操作の一部について解説しました。今回は引き続き、ワークシートを操作する様々な手法について解説していきます。

ワークシートを操作する
 
VBAを使用することで、参照先のワークシートに対して様々な操作を行うことが可能です。
 
■Addメソッド、Deleteメソッド
Addメソッドは1つまたは複数の新しいワークシートを挿入します。Deleteメソッドは1つまたは複数のワークシートを削除します。

[書式]
オブジェクト.Add(左側, 右側, 枚数)


オブジェクトには、Worksheetsコレクションを指定します。
左側に指定したワークシートの左側に、右側に指定したワークシートの右側に、それぞれ新しいワークシートを挿入します。
枚数には、挿入するワークシートの枚数を指定します。省略すると1が指定されます。

※ 挿入するワークシート名は自動的に付けられます。変更する場合は、Nameプロパティを使用します。

[書式]
オブジェクト.Delete

オブジェクトには、Worksheetオブジェクトを指定します。

※ Deleteメソッドを使用してワークシートを削除すると、削除の確認ダイアログボックスが表示されます。ダイアログボックスを表示させないようにするには、Application.DisplayAlertsプロパティにFalseを指定します。

(例)
Sub Test()
  Worksheets.Add Worksheets("Sheet1"), , 2
  Application.DisplayAlerts = False
  Worksheets("Sheet3").Delete
  Application.DisplayAlerts = True
End Sub
 
このプロシージャを実行すると、アクティブブックの「Sheet1」シートの左側に新しいワークシートを2つ挿入します。さらに削除の確認なしで「Sheet3」シートをただちに削除します。

■Copyメソッド、Moveメソッド
Copyメソッドはワークシートをコピーします。Moveメソッドはワークシートを移動します。

[書式]
オブジェクト.Copy 左側, 右側
オブジェクト.Move 左側, 右側

オブジェクトには、Sheetsコレクション、Worksheetsコレクション、Worksheetオブジェクトを指定します。
左側に指定したワークシートの左側に、右側に指定したワークシートの右側に、それぞれワークシートをコピー/移動します。またこれらの引数を省略すると、新規ブックが自動的に作成され、そのブックにコピー/移動されます。

(注意)引数「左側」と引数「右側」を同時に指定することはできません。

※ 複数のブックを開いた状態なら、ワークシートを別のブックにコピー/移動することができます。その場合、
「Worksheets("Sheet1").Copy Workbooks("Test.xls").Worksheets("Sheet3")」
のように記述します。また、ワークシートのコピー/移動先に同じ名前のワークシートがある場合、「Sheet1(2)」のようにカッコ付きの名前に変更されます。

(例)
Sub Test()
  Worksheets("Sheet1").Move , Worksheets("Sheet3")
  Worksheets("Sheet1").Copy
End Sub

シート見出しが「Sheet1、Sheet2、Sheet3」となっている場合、このプロシージャを実行すると、シート見出しが「Sheet2、Sheet3、Sheet1」に変更されます。さらに、新規ブックが自動的に作成され「Sheet1」シートがコピーされます。

■Nameプロパティ
ワークシートの名前を取得・設定することができます。

[書式]
オブジェクト.Name
オブジェクト.Name = シート名

オブジェクトには、Worksheetオブジェクトを指定します。
シート名には、ワークシート名に設定する文字列を指定します。

(注意)ワークシート名には空白を指定することはできません。また
: \ / ? *
の記号を使用することもできません。なお、ワークシートの名前は31文字以内である必要があります。

(例)
Sub Test()
  Worksheets.Add , Worksheets("Sheet1"), 1
  ActiveSheet.Name = "NewSheet"
End Sub
 
このプロシージャを実行すると、アクティブブックの「Sheet1」シートの右側に新しいワークシートを挿入し、挿入されたワークシートの名前を「NewSheet」に変更します。

■Visibleプロパティ
Visibleプロパティは、ワークシートの表示/非表示の状態を切り替えます。

[書式]
オブジェクト.Visible
オブジェクト.Visible = 値

オブジェクトには、Worksheetオブジェクトを指定します。
には、TrueまたはFalseまたはXLSheetVisibilityクラスの定数を指定します。Trueを指定するとワークシートを表示、Falseを指定すると非表示にします。
 
XLSheetVisibilityクラスの定数は次のものを指定します。
定数 内容
xlSheetHidden シートを非表示にするが、手動で再表示できる(Falseと同じ)
xlSheetVeryHidden シートを非表示し、手動で再表示できない
xlSheetVisible シートを表示する

※ xlSheetVeryHiddenで非表示にしたシートを再表示させるには、xlSheetVisibleを設定する必要があります。

※ ワークシートを手動で再表示するには、[書式]メニューの[シート]>[再表示]をクリックして再表示ダイアログボックスを表示させます。次に非表示になっているシートを選択して[OK]ボタンをクリックします。xlSheetVeryHiddenに設定したシートは、この再表示ダイアログボックスに表示されません。

(例)
Sub Test()
  Worksheets("Sheet1").Visible = Not Worksheets("Sheet1").Visible
End Sub

この例ではプロシージャが実行されるたびに、アクティブブックの「Sheet1」シートの表示/非表示を切り替えます。

■Countプロパティ
Countプロパティは、シートの数を数えて返します。その際、非表示なっているシートも数に含まれます。

[書式]
オブジェクト.Count


オブジェクトには、Sheetsコレクション、Worksheetsコレクション、Chartsコレクションを指定します。
Sheetsコレクション すべてのシートの数を返します
Worksheetsコレクション すべてのワークシートの数を返します
Chartsコレクション すべてのグラフシートの数を返します

(例)
Sub Test()
  Debug.Print Sheets.Count
  Debug.Print Worksheets.Count
  Debug.Print Charts.Count
End Sub

アクティブブックに3つのワークシートと2つのグラフシートがあるとき、このプロシージャを実行するとイミディエイトウィンドウに「5」「3」「2」が出力されます。

(例)
Sub Test()
  Dim i As Long
  For i = 1 To Worksheets.Count
    Debug.Print Worksheets(i).Name
  Next i
  Worksheets.Add , Worksheets(Worksheets.Count)
End Sub

このプロシージャを実行すると、アクティブシートにあるすべてのワークシートの名前をイミディエイトウィンドウに出力します。さらに、シート見出しの一番右側にあるワークシートの右側に新しいワークシートを挿入します。

■Protectメソッド、Unprotectメソッド
Protectメソッドは、ワークシートを保護します。Unprotectメソッドは、ワークシートの保護を解除します。

[書式]
オブジェクト.Protect パスワード, 描画オブジェクト, コンテンツ, シナリオ, マクロ保護
オブジェクト Worksheetオブジェクトを指定します
パスワード 保護を解除するためのパスワードを文字列で指定します。省略するとパスワードなしで保護を解除することができます
描画オブジェクト TrueまたはFalseを指定します。Trueを指定すると描画オブジェクトを保護します。省略するとFalseが指定されます
コンテンツ TrueまたはFalseを指定します。Trueを指定するとワークシートでロックされているセルを保護します。省略するとTrueが指定されます
シナリオ TrueまたはFalseを指定します。Trueを指定するとシナリオを保護します。省略するとTrueが指定されます
マクロ保護 TrueまたはFalseを指定します。Falseを指定すると画面・マクロのどちらからも変更することができなくなります。省略するとFalseが指定されます

※ Protectメソッドにはこの他にもたくさんの引数があります。ここでは代表的なものを解説しています。すべての引数についてはヘルプを参照してください。

[書式]
オブジェクト.Unprotect パスワード

オブジェクトには、Worksheetオブジェクトを指定します。
パスワードには、保護を解除するためのパスワードを文字列で指定します。省略すると、パスワードを設定しないで保護した場合はそのまま保護が解除され、パスワードを指定して保護した場合はパスワードの入力を求めるダイアログボックスが表示されます。

※ シートが保護されているかどうかを調べるには、ProtectContentsプロパティを使用します。例えば「Worksheets("Sheet1").ProtectContents」の返り値がTrueのとき、「Sheet1」シートは保護されています。Falseなら、保護されていません。

(例)
Worksheets("Sheet1").Protect "PASSWORD"

この例では、アクティブブックの「Sheet1」シートに「PASSWORD」というパスワードをかけて保護します。

(例)
Worksheets("Sheet1").Unprotect "PASSWORD"
Worksheets("Sheet1").Unprotect

上の例では、「PASSWORD」というパスワードで保護された「Sheet1」シートの保護を解除します。下の例では、パスワードの入力を求めるダイアログボックスを表示します。このとき、パスワードの入力を間違えると実行時エラーが発生するので注意してください。

■DisplayWorkbookTabsプロパティ、Tab.ColorIndexプロパティ
DisplayWorkbookTabsプロパティはシート見出しの表示/非表示を切り替えます。Tab.ColorIndexプロパティはシート見出しの色を取得・設定します。

[書式]
オブジェクト.DisplayWorkbookTabs
オブジェクト.DisplayWorkbookTabs = 値


オブジェクトには、Windowオブジェクトを指定します。
には、TrueまたはFalseを指定します。Falseを指定するとシート見出しを非表示にします。

[書式]
オブジェクト.Tab.ColorIndex
オブジェクト.Tab.ColorIndex = 値

オブジェクトには、WorksheetオブジェクトまたはChartオブジェクトを指定します。
には、カラーパレットのインデックス番号を指定します。色をなしにするにはXlColorIndexNoneを指定します。

(例)
Sub Test()
  ActiveWindow.DisplayWorkbookTabs = _
              Not ActiveWindow.DisplayWorkbookTabs
End Sub

この例ではプロシージャが実行されるたびに、アクティブウィンドウのシート見出しの表示/非表示を切り替えます。

(例)
Sub Test()
  Dim o As Worksheet
  For Each o In Worksheets
    o.Tab.ColorIndex = 3
  Next
End Sub

このプロシージャを実行すると、アクティブブックにあるすべてのワークシートのシート見出しを赤色に変更します。



以上で、ワークシートを操作する様々な手法についての解説を終わります。

ワークシートを自由に操作することで、さらにユーザーが使いやすい業務システムを提供することが可能です。前回のセル操作と併せて、今回の内容をよく理解しておいてください。

>> 次の話にすすむ


サイト内検索ができます

Microsoft Most Valuable Professional

Microsoft MVP Excel
武藤 玄 プロフィール
 

■■■ 執筆した書籍 ■■■
 

EXCEL VBA 業務自動化
 

Excel VBA を5日でマスターする本
 

仕事を速くする Excel VBA 入門
 

Excel VBAと業務改善のポイントがわかる本
 

Access VBA ベーシック スタンダード
 

Excel VBA アクションゲーム作成入門
 

■■■ 連載中の記事 ■■■
 

Excel VBAで業務改善!
 

実務で使うExcel VBA
 


TOPページ


■ エクセルVBA超入門

 ・9ステップで"Hello World!"
  からオブジェクト指向まで!
  1."Hello World!"を表示しよう
  2.基本はデータの入出力
  3.繰り返し処理
  4.シートで簡易データベース
  5.名前をつけよう
  6.構造化プログラムに挑戦
  7.構造体を使ってみよう
  8.フォームを使ってみよう
  9.オブジェクト指向に挑戦

■ エクセルVBA中級編

 ・VBAでいろんなテクニック
  変数・関数のスコープ
  引数の参照方法を明示
  配列の中身を一気に複写
  識別子がよいコードを作る
  データ定義型をもっと知ろう
  定数と列挙型を活用しよう
  エラー処理の重要性1
  エラー処理の重要性2
  いろいろな条件分岐
  いろいろな繰り返し処理
  演算子について知ろう
  文字列操作 連結 変換 置換
  文字列操作 検索 比較 書式
  日付操作関数を知ろう
  数値操作・評価・その他関数
  並び替えソートをマスター
  いろいろな検索をマスター
  VBEditorを使いこなそう
  マクロの記録を活用しよう1
  マクロの記録を活用しよう2
  VBAからVBEを操作しよう1
  VBAからVBEを操作しよう2
  VBAからVBEを操作しよう3
 ・ワークシートを使いこなす
  セルの参照をマスターしよう
  セルの選択をマスターしよう
  セルの操作をマスターしよう
  セルの書式設定をマスターしよう
  行・列の操作をマスターしよう
  シートの参照をマスターしよう
  シートの操作をマスターしよう
  ブックの操作をマスターしよう
  ウィンドウの操作をマスターしよう
  イベントプロシージャを活用しよう
  ワークシートを印刷しよう1
  ワークシートを印刷しよう2
  音声(読み上げ)機能を操作しよう
  グラフを操作しよう
 ・ユーザーフォームを使いこなす
  ユーザーフォームを使おう
  UserFormsオブジェクト
  Labelコントロール
  TextBoxコントロール
  ComboBoxコントロール
  ListBoxコントロール
  CheckBoxコントロール
  OptionButtonコントロール
  ToggleButtonコントロール
  CommandButtonコントロール
  ScrollBarコントロール
  SpinButtonコントロール
 ・VBA関数の一覧
  Aから始まる関数の一覧
  Cから始まる関数の一覧
  Dから始まる関数の一覧
  Eから始まる関数の一覧
  Fから始まる関数の一覧
  Gから始まる関数の一覧
 
■ エクセルVBAを極める
 VBAスーパーテクニック
 
 ・データベースへ接続してみよう!
  CSVファイルへの接続
  ワークシートへの接続
  mdbファイルへの接続
  SQL Serverへの接続
  ADOレコードセットの操作1
  ADOレコードセットの操作2
 ・ファイルを操作してみよう!
  FileSystemObjectの操作
  Drive File Folderの操作
  TextStream ダイアログ
  ステートメントでファイル操作1
  ステートメントでファイル操作2
 ・他アプリと連携してみよう!
  ActiveXオートメーションの操作
 ・ゲーム技でマクロを超える
  エクセルで音を鳴らす1
  エクセルで音を鳴らす2  
  スクリーン座標を取得
  様々なイベント取得
  リボンUIを制御しよう1
  リボンUIを制御しよう2
  シート上でアニメを動かそう
 
■ 一歩上行くエクセル
 基本操作の完全マスター!

 
 ・あなたはいったい
  エクセルで何をしたいのか?
  エクセルで業務効率化
  エクセル関数を使いこなす
  エクセルの便利技
  エクセルは最高の帳票ツール
 ・エクセル基本操作上級編!
  セル選択、コメント、シリアル値
  オート機能を使いこなそう!
  参照、条件付書式、入力規則
  関数をもっと理解しよう!
  配列数式を有効利用しよう!
  データの正規化をしよう!
  ショートカットキーを利用しよう1
  ショートカットキーを利用しよう2
  Office用アプリを作成しよう!
  PowerPivotとExcelで簡単BI!
 ・世間の誤ったエクセルの
  べからず集
  エクセルで文章を書くべからず
  エクセルで図形を描くべからず
  エクセルでシステムをつくるな
 
■ エクセル関連その他

 ・エクセルコミニュティにあなたも
  参加しませんか?
  Excel関連リンク・コミニュティ
 ・VBの理解がVBAをマスターする
  最短距離!
  VB関連の老舗・大家サイト
 ・エクセルExcel大事典掲示板
 ・プライバシーポリシー

2000アイテムを超えるラベルを販売
送料無料、即納対応の優良ショップ
今買っているラベルより確実に安い!
OAラベルの販売専科グラフトラベル




エクセルExcel大事典ははリンクフリーです エクセル大事典Excel大事典
お問い合わせはこちら gengengen@yahoo.co.jp

Copyright© Gen Muto 武藤 玄 All Rights Reserved,