• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:特定のシートだけ関数入力を除外したい)

特定のシートだけ関数入力を除外したい

このQ&Aのポイント
  • windows7 Excel2007でマクロ作成中の初心者です。30枚のシートがあるブックがあります。特定のシートだけ関数の入力を除外する方法について教えてください。
  • 質問者はwindows7 Excel2007でマクロ作成中の初心者です。ブックには30枚のシートがあり、特定のシートだけ関数の入力を除外したいと考えています。また、除外するシート名が可変のため、どのようなコードを記述すればよいか教えてください。
  • windows7 Excel2007でマクロ作成中の初心者です。30枚のシートがあるブックがあります。特定のシートだけ関数の入力を除外する方法を教えてください。また、除外するシート名が可変で、その数は15枚から20枚です。

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

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.6

#たびたび申し訳ございません。 imogasi さんの [回答番号:No.2] に対する「補足」で >Dim t As Integer, i As Integer >t = Sheets.Count - 7 >i = Sheets.Count - 8 とお書きですが、ひょっとして、「30個ある ワークシート の中の、後ろから数えて、8番目と9番目の ワークシート を除外したい」ということですか?  そういうことでしたら、 Const EXCEPT_NAME = "表紙 経理 一覧  部門" の行の替わりに Dim EXCEPT_NAME As String EXCEPT_NAME = "表紙 経理 一覧  部門" & _  " " & Worksheets(Sheets.Count - 7).Name & _  " " & Worksheets(Sheets.Count - 8).Name でいけるかと存じますが...。

aitaine
質問者

補足

できましいtった。ありがとうございます。これでやっと枕をたかくして寝ることができますありがとう

その他の回答 (5)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.5

 DOUGLAS_ です。 >実はこの2枚のシートはころころと名前がかわるので、文字列で指定できないのです。 >それで悩んでいるのですが・・・  それは、ご質問文の中に記載していらっしゃいますので、存じております。  肝心なのは、ご質問文の中にお書きの「上のシート」という ワークシート でして、「上のシート」という シート が特定できているのでしたら、 Worksheets("上のシート") の中の「"上のシート"」の部分を、その シート名 に変えていただければ結構ですよ! と申しているのです。  「上のシート」が特定できていないようでしたら、「~~の前にある2枚のシート」はなおさら特定できません!  このような問題の場合は、「動かないものは何か」をよく吟味していただいて、その条件をご呈示ください。

aitaine
質問者

補足

関数を入れたくないシートが経理というシートの前にあるので Dim EXCEPT_NAME As String EXCEPT_NAME = "表紙 経理 一覧  部門" & _  " " & Worksheets("経理").Previous.Name & _  " " & Worksheets("経理").Previous.Previous.Name として何回も実行したところ、またまたインデックスが有効範囲にありません。とでます。あああわからないです。

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.4

[回答番号:No.1・3] の DOUGLAS_ です。 >今実行しましたら「インデックスが有効範囲にありません」とでました。  まさかとは思いますが、「("上のシート")」という記述をそのままコピペして試されたのではないでしょうね?  aitaine さんが >上のシートの前にある2枚のシートだけ関数を入れないようにしたい とお書きですので、 Worksheets("上のシート") というような表現にしておりますが、「("上のシート")」の部分には、ワークシート の実際の名前をお書きください。

aitaine
質問者

補足

そのまさかのことをしてしまいました。 実はこの2枚のシートはころころと名前がかわるので、文字列で指定できないのです。それで悩んでいるのですが・・・

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.3

[回答番号:No.1] の DOUGLAS_ です。 >このコードを上書きし実行したところ Const EXCEPT_NAME = "表紙 経理 一覧  部門" & _  " " & Worksheets("上のシート").Previous.Name & _  " " & Worksheets("上のシート").Previous.Previous.Name とされたのでしたら × です。 Const EXCEPT_NAME = "表紙 経理 一覧  部門" の行の替わりに Dim EXCEPT_NAME As String EXCEPT_NAME = "表紙 経理 一覧  部門" & _  " " & Worksheets("上のシート").Previous.Name & _  " " & Worksheets("上のシート").Previous.Previous.Name とするという意味でした。 [Const ステートメント] は >リテラル値の代わりに使う定数を宣言します。 と ヘルプ に書いてあるでしょう。

aitaine
質問者

補足

今実行しましたら「インデックスが有効範囲にありません」とでました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

大勢一般のシートに対して行う処理を、避けたいシートがあるということか。処理を避けるシートのメルクマール(区別)は何か。質問に書かないで、質問しても回答者や読者には判らないよ。 そういう質問ではないの。 ーー エクセルVBAでのシートの識別の原理論に立ち返ること。 1.名前 Arrayで複数指定できる 2.インデックス番号 番号で何々から何々と複数指定できる 3.AcactiveSheet 4.Next 5.Previous 6.(操作者が)選択したシート 複数指定・不定指定が前提 Sub test01() Dim sh As Worksheet For Each sh In ActiveWindow.SelectedSheets MsgBox sh.Name Next End Sub 7.1の亜種だが、シートのセルにシート名を指定。  ファイル(例テキストファイル)などにファイル名を記憶   プログラムコードの中にシート名を組み込み(配列など)。 8.以上もれているものもあるかもしれないが、これ以外は少数だろう。 これらを使って、どう表すか、質問者が考えないと。

aitaine
質問者

補足

せっかく丁寧なご回答いただきましたが、現在の私の力では理解しがたく、恐縮でもうしわけありません。 たとえば、 Dim t As Integer, i As Integer t = Sheets.Count - 7 i = Sheets.Count - 8 Const EXCEPT_NAME = "表紙 経理 一覧  部門" & _ " " & Worksheets(t).Name & _ " " & Worksheets(i).Name というようなコードをつくりたいのですが・・・。うまくいきません。 定数式が・・のエラーがでます。

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

こういうことでしょうか? Dim EXCEPT_NAME As String EXCEPT_NAME = "表紙 経理 一覧  部門" & _  " " & Worksheets("上のシート").Previous.Name & _  " " & Worksheets("上のシート").Previous.Previous.Name

aitaine
質問者

補足

このコードを上書きし実行したところ、コンパイルエラー 定数式が必要です。となりました。 定数式がよくわかりません。お願いします。

関連するQ&A