sheets() と worksheets() の違い

このQ&Aのポイント
  • VBAの記述で、Sheets()とWorksheets()は同じ結果になります。
  • Sheets()は全てのシートを対象とし、Worksheets()は非表示のシートを対象としません。
  • 一般的にはSheets()がより一般的に使用されます。
回答を見る
  • ベストアンサー

sheets() と worksheets() の違い

基本的な内容になるのかもしれませんが、ヘルプや他の方のプログラムなどを読んでも、いまひとつ理解できないので、質問させていただきました。 EXCELのVBAの記述で、仮に Worksheets("sheet1").Select Worksheets("sheet1").Visible = False としても Sheets("sheet1").Select Sheets("sheet1").Visible = False としても同じ結果になります。私は普段後者のSheets()という記述をしているのですが、人によってはWorksheets()を使用されている方も見受けられます。 この2つどのような違いがあるか教えていただければ、とてもうれしいのでが。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

エクセルのシートにはワークシート以外にもグラフシートやダイアログシートなどがあります。 Sheets("sheet1")は、そういうシートの種類を区別せず、sheet1という名前のシートを指します。 Worksheets("sheet1")は、あくまでワークシートの中でsheet1という名前のシートを指します。 実際には、グラフシートやダイアログシートなどの名前をワークシートと同じにすることが出来ないので区別しなくとも通常は影響しませんが、シートの種類を限定してなんらかの操作を行ないたい場合には明確に使い分けなくてはなりません。

omnibussss
質問者

お礼

なるほど! よく分かりました。 ありがとうございます。

関連するQ&A

  • エクセルのマクロの記述について

    VBA初心者ですのでどうか詳しく教えてください。下記のマクロをエクセルで組んだのですが・・・ -------------------------------------------------------------------- Sub hideworksheets() Worksheets("sheet1").Visible = False End Sub Sub ボタン_Click() ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet1").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet3").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet4").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub ------------------------------------------------------------ 1.上記設定で"sheet5"という別シートにボタンを設置した場合、このボタンを実行すると、シート1~4のほかにシート5まで印刷されてしまいます。シート5を印刷したくない場合のVBAの記述について教えてください。 2.「Sub hideworksheets()  Worksheets("sheet1").Visible = False    End Sub」    の箇所で、シート1を非表示にしたいのですが、このマクロを実行時、「Sub ボタン_Click()」以下のマクロを実行しようとすると、「実行時エラー1004 worksheeクラスのselectメソッドが失敗しました」のエラーがでてしまいます。シート1を非表示にし、無事印刷のマクロを実行する為の記述を教えてください。

  • VBAを入れる場所

    シートの非表示をVBAで実行したく(Excel2000) VBAのヘルプを見て Worksheets("Sheet1").Visible = False という式を見つけたのですが、どこに入力していいのかがわかりません。 質問内容をみていただいた通り、VBAに関しては全く知識がありません。 標準モジュールに入力してみたのですが、ダメでした。 (できれば、手順を詳しく教えてください) と、多分、上の式は、Sheet1を表示しなくするということだと思うのですが、 例えばSheet1とSheet3とか SHEET1からSheet4まで非表示にするとか というときには、どのように記述 したらよいのか、教えてください。 (Excelの機能でのシート非表示は知っています)

  • 【エクセルVBA】WorksheetsのSelec

    Worksheets(AA).Select を行って、それ以下のプログラムは シートを指定しなくても Worksheets(AA)からデータを取ってくるわけではないのでしょうか? アクティブシートから情報を取ってくることがあるので シートの指定の標準的な記述(手法?)を知りたいです。

  • コピペ,ドラッグ&ドロップをシート全体及び複数範囲指定で禁止したい

    コピペ,ドラッグ&ドロップをシート全体及び複数範囲指定で禁止したい お世話になります。 上記の内容を実現したいのですが This Workbookには Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheets("Sheet1").Visible = True Sheets("Sheet2").Visible = False Sheets("Sheet3").Visible = False Sheets("Sheet1").Select ActiveWorkbook.Protect Password:="123" ActiveWorkbook.Save End Sub ――――――――――――――――――――――――――――――――――――――― Private Sub Workbook_Open() ActiveWorkbook.Unprotect Password:="123" Sheets("Sheet2").Visible = True Sheets("Sheet3").Visible = True Sheets("Sheet2").Select Sheets("Sheet3").Select Sheets("Sheet1").Visible = False End Sub が入っていますがどのようにすればいいのでしょうか? ご教示お願いします。 ちなみにexcel2003です。

  • エクセルのマクロを有効にしないと表示しないようにする方法

    エクセルでマクロを有効にしないと、シートが表示されないように設定したいのですが、下記の様に(ほかの方の投稿から)入力すると三行目がエラーになります。素人なので、よくわかりません。どのようにしたら、マクロを有効にしないと全てのシートを表示しないようにできるのでしょうか? ご教授いただけますでしょうか Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheets(\"Sheet1\").Visible = False Sheets(\"Sheet2\").Visible = False ActiveWorkbook.Protect Password:=\"error123\" End Sub Private Sub Workbook_Open() ActiveWorkbook.Unprotect Password:=\"error123\" Sheets(\"Sheet1\").Visible = True Sheets(\"Sheet2\").Visible = True Sheets(\"Sheet1\").Select End Sub

  • 値の受け渡し

    VBAで開くときにマクロを有効にしないとシートがみれないように 【はじめに】【松】【竹】【梅】の4つのシートがあるうち、 保存時に 【はじめに】=表示、 【松】【竹】【梅】=非表示 保存後に 【はじめに】=非表示、 【松】【竹】【梅】=表示 の処理にしましたが、 閉じるで保存ではなくctrl+Sで保存した場合、まだ処理中でも 【竹】【梅】シートで保存した場合【梅】シートが表示されてしまいます。 どのようにしたら使っていたシートに戻れるでしょうか? よろしくお願いします。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheets("はじめに").Visible = True Sheets("はじめに").Select Sheets("松").Visible = False Sheets("竹").Visible = False Sheets("梅").Visible = False End Sub Private Sub Workbook_afterSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheets("松").Visible = True Sheets("竹").Visible = True Sheets("梅").Visible = True Sheets("はじめに").Visible = False ★保存をしたシートに戻りたい End Sub Private Sub Workbook_Open() Sheets("松").Visible = True Sheets("竹").Visible = True Sheets("梅").Visible = True Sheets("はじめに").Visible = False End Sub

  • マクロ編集プリントアウト

    Sheets("Sheet1").Select Selection.Copy Sheets("Sheet2").Select Range("A3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet4").Select Application.CutCopyMode = False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("Sheet1").Select Range("A9").Select Sheets("Sheet1").Select Selection.Copy Sheets("Sheet2").Select Range("A3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("Sheet4").Select Application.CutCopyMode = False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("Sheet1").Select Range("A15").Select これで2回プリントアウトされていることになります。 6行ずつ下方にデータが続いています。 データ行数は常に変化します。 dim i as long  for i = 3 to 99 step 6   if worksheets("Sheet1").cells(i, "A") = "" then    worksheets("Sheet2").range("A3:H8").value = worksheets("Sheet1").cells(i - 6, "A").resize(6, 8).value       end if  next i を使用してうまくまとめることはできるでしょうか?

  • worksheetsプロパティでエラーが出る

    VBA初心者です。 vlook関数をVBAで再現したく、ネットのあれこれを参考にコードを組んでみましたがエラーが出てしまいます。 同一ブックの中にある、Aシートをデータ範囲としてBシートに値を引っ張りたいのですが、 以下のようなコードを書くと「アプリケーション定義またはオブジェクト定義のエラーです」とでます。 Set 範囲 = Sheets("A").Range(A1:D100) For i = 1 To 100 検索値 = Sheets("B").Range(i , 9) 値1 = Application.WorksheetFunction.VLookup(検索値, 範囲, 2, False) 値2 = Application.WorksheetFunction.VLookup(検索値, 範囲, 3, False) Next vlookの前にSetのところでエラーがでます。 どうやら、シートがアクティブではないから、ということのようですが、正直どのように直したらよいものかわかりません。 Sheets("シート名").Range("範囲") とすれば、事前にシートをアクティブにする必要はないと思っていたのですが、そもそも間違っていますでしょうか? どうぞご教授くださいますと幸いです。

  • Excel2007のSheets.Copyコマンド不具合?

    Excel2007のSheets.Copyコマンド不具合? OS WindowsXP sp2 Excel2007 新規ブックにコマンドボタンを用意して、以下のようなコードを実行するとVisible=falseにしたはずのBookが「Copyコマンド」 発行直後に表示されてしまう。 Private Sub cmdCopy_Click() Excel.Application.Visible = False Call Sheets.Copy(Before:=Sheets(1)) MsgBox "コピー完了" Excel.Application.Visible = True End Sub ※2007以外のバージョンであれば「コピー完了」迄はBookは隠れたままである。 不具合か、もしくは仕様変更と思われます。なにか回避策有りますでしょうか? 同様の処理をVB6や、AccessからExcelを遠隔操作で処理するとBookが表示された瞬間に、 何らかのきっかけでフォーカスが与えられると処理が止まってしまい、困っております。

  • セルをコピーしてシート名を取得 【VBA】

    こんばんわ。 エクセルのVBAについて、どうしてもわからなくなったので質問させて下さい。 マクロの内容は 1.一番前のシート(名前はSheet1ではありません。)のボタン35をクリック 2.シートをコピーして3番目に置く。 3.値にする。 4.シート名をセルの"DE16"に入っている値にする。 5.ボタンを消す。 以下の内容になりましたが、名前のところでデバックがおこります。 Sub ボタン35_Click() Worksheets(1).Select Worksheets(1).Copy After:=Sheets(3) Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues Worksheets(3).Select Worksheets(3).Name = Range("DE16").Value ActiveSheet.Shapes("Button 11").Select Selection.Delete Application.CutCopyMode = False End Sub どなたかお知恵を貸して下さい。

専門家に質問してみよう