Zoho Sheetマクロ機能の「ワークシートの操作」には、追加・削除・移動・コピーなどの基本的な操作がありますが、いずれも実行できます。具体的には、
- ワークシートの追加
WorkSheetsコレクション.Add(Before:=ワークシート,After:=ワークシート,Count:=追加数)
- ワークシートの削除
WorkSheetオブジェクト.Delete
- ワークシートの移動
オブジェクト.Move(Before:=ワークシート,After:=ワークシート)
ここでオブジェクトは、WorkSheetsコレクション、Sheetsコレクション、またはWorkSheetオブジェクト。
- ワークシートのコピー
オブジェクト.Copy(Before:=ワークシート,After:=ワークシート)
ここでオブジェクトは、WorkSheetsコレクション、Sheetsコレクション、またはWorkSheetオブジェクト。
よくワークシートの削除で、ダイアログボックスによる確認が行われますが、現状はMsgBoxが表示のみの為にできません。
Application.DisplayAlerts = True/False
も無視されますので、アップロードしたMS-Excelマクロとの互換上は問題ありません(というか、操作上の影響は小さい)。
ワークシートの参照として、
- WorkSheets(インデックス).Select
- WorkSheets(インデックス).Select Replace:=True/False
- ActiveSheet
などが使えます。「WorkSheets(インデックス).Select」と「WorkSheets(インデックス).Select Replace:=False」を組合せて複数のシートを選択し、
で特定のワークシートをアクティブにできます。
しかし、MS-Excelでは可能な複数のシートを一度に選択する事は現状できません。例:
WorkSheets(Array(1,2)).Select
選択している複数のシートに対して、削除やコピーなどの処理をする時にMS-Excelで使う、
SelectedSheets
も現状は利用できません。
いずれも個々のワークシートに操作する必要があります。
ワークシート名の変更やワークシートの枚数カウントはできます。
・WorkSheetオブジェクト.name=設定値
・WorkSheetsコレクション.Count
しかし、シート見出しの色変更はできません。(現状、Tabが未サポート)
「制御構造」の一つである「For Each オブジェクト変数 IN コレクション」は、WorkSheetsコレクションにも使えますので、同じワークシート名があるかを確認するのに便利です。
例:
Sub CheckSameName()
Dim CheckSheet As Worksheet
For Each CheckSheet In Worksheets
If CheckSheet.Name = "太郎" Then
MsgBox "「太郎」と同名シートがあります"
Exit Sub
End If
Next
End Sub
尚、WorkBooksにおけるOpenメソッドなどが現状で未サポートであり、別ブックに対するシートの移動・コピーなどの操作はできません。
注意:上記は2008年8月16日時点で、簡単な構文により確認した範囲で記述しています。
尚、できていない事を強調してZoho Sheetマクロ機能を否定する意味ではない事をご理解ください。