• ベストアンサー

EXEL VBAで複数のsheetを指定するには?

ThisWorkbookにsheet1からsheet9までの範囲で処理をさせたいと思い Else Worksheets("Sheet1", "sheet3").Select If Not Intersect(Target, Sh.Range("B7:B299")) Is Nothing Then If Target.Value = "" Then Target.Value = "2010/" Application.SendKeys "{f2}" としますがエラーになります。 色々調べましたが、精根尽き果ててお伺いします。 宜しくお願いします。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.6

NO5です。 >どうも、シートに名前を付けているのがひっかかってるみたいです。  ⇒"Sheetn"の箇所を実体の名前にして下さい。

kyon0512
質問者

お礼

出来ました、sheetをいれずにH22.4とそのままを入れたら出来ました。 お陰で助かりました。 本当に色々ありがとうございました。

kyon0512
質問者

補足

exel objectに表示されてるとおり下記のとおり Case "Sheet1(H22.4)", "Sheet2(H22.5)", "Sheet3(H22.6)" いれてみますが駄目みたいです。 宜しくお願いします。

その他の回答 (5)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.5

NO4です。 余計な事をしたみたですね、コードを元に戻しましたのでお試しください。 因みにこちらでは問題なく確認できているのですが。 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.EnableEvents = False If Not Intersect(Target, Sh.Range("C7:E299")) Is Nothing Then SendKeys "%{DOWN}" Else Select Case Sh.Name Case "Sheet1", "Sheet2", "Sheet3" If Not Intersect(Target, Sh.Range("B7:B299")) Is Nothing Then If Target.Value = "" Then Target.Value = "2010/" Application.SendKeys "{f2}" End If End If End Select End If Application.EnableEvents = True End Sub

kyon0512
質問者

お礼

exel objectに表示されてるとおり下記のとおり Case "Sheet1(H22.4)", "Sheet2(H22.5)", "Sheet3(H22.6)" いれてみますが駄目みたいです。 宜しくお願いします。

kyon0512
質問者

補足

白紙のシートでやると出来ますね。 しかし、現在のファイルでやると出来ないのですが? どうも、シートに名前を付けているのがひっかかってるみたいです。 名前を付けた場合の書き方はどのようにするのでしょうか? 宜しくお願いします。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

NO2です。 一例です。 シート名範囲をチェックすればよいのでしょうか。 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.EnableEvents = False If Not Intersect(Target, Sh.Range("C7:E299")) Is Nothing Then SendKeys "%{DOWN}" Else Select Case Sh.Name Case "Sheet1", "Sheet2", "Sheet3" If Not Intersect(Target, Sh.Range("B7:B299")) Is Nothing _ And Target.Value = "" Then Target.Value = "2010/" Application.SendKeys "{f2}" End If End Select End If Application.EnableEvents = True End Sub

kyon0512
質問者

お礼

ありがとうございます。 このとおりやってみますが、シート1~3でマクロが動いてないみたいなのですが? つまりセル上で2010/が出てこないみたいです。 それで If Not Intersect(Target, Sh.Range("B7:B299")) Is Nothing _ And Target.Value = "" Then を元の If Not Intersect(Target, Sh.Range("B7:B299")) Is Nothing Then If Target.Value = "" Then にしてやると今度は selectcaseに対するEnd Selectがないとでます。 endselectはあるのに・・・? うーーん、わかりません。 宜しくお願いします。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

NO2です。 >実行時エラー”9”インデックスが有効範囲にありません  ⇒仕様、マクロ全体を明示されていないので現象を通知されても何も分かりません。   この辺りを補足をして下さい。

kyon0512
質問者

お礼

解答ありがとうございます。やはり中途半端に書いては駄目みたいですね。 下記をthisworkbookに置いてelse以下の処理をsheet1~3で行いたいのです。 else以前の部分は全体の処理でいいのですが。 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.EnableEvents = False If Not Intersect(Target, Sh.Range("C7:E299")) Is Nothing Then SendKeys "%{DOWN}" Else If Not Intersect(Target, Sh.Range("B7:B299")) Is Nothing Then If Target.Value = "" Then Target.Value = "2010/" Application.SendKeys "{f2}" End If End If End If Application.EnableEvents = True End Sub 宜しくお願いします。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

>エラーになります。  ⇒(誤)Worksheets("Sheet1", "sheet3").Select   (正)仮にSheet1~Sheet3ならSheets(Array("Sheet1", "Sheet2", "Sheet3")).Select   

kyon0512
質問者

お礼

解答ありがとうございます。 やってみたところ、 実行時エラー”9” インデックスが有効範囲にありません と出ます。

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

for each sh in .... (略)のようになっているとすれば Worksheets("Sheet1", "sheet3").Select この部分を if sh.name="Sheet1" or sh.name="Sheet3" then sh.select こう書き換えればいいのではないかと。

kyon0512
質問者

お礼

早速の解答ありがとうございます。for each sh in ではないので下記に記します。 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Application.EnableEvents = False If Not Intersect(Target, Sh.Range("C7:E299")) Is Nothing Then SendKeys "%{DOWN}" Else If Not Intersect(Target, Sh.Range("B7:B299")) Is Nothing Then If Target.Value = "" Then Target.Value = "2010/" Application.SendKeys "{f2}" End If End If End If Application.EnableEvents = True End Sub それでelse以下にsheet1~sheet3迄の処理をさせたいのです。 ちなみにお教え頂いたif sh.name="Sheet1" or sh.name="Sheet3" then sh.select のとおりに書き換えても駄目みたいです。 宜しくお願いします。

関連するQ&A