Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10073 / 13646 ツリー ←次へ | 前へ→

【23791】ワークシートの有無判定 pino 05/4/4(月) 16:49 質問[未読]
【23793】Re:ワークシートの有無判定 Jaka 05/4/4(月) 17:06 発言[未読]
【23794】Re:ワークシートの有無判定 Kein 05/4/4(月) 17:09 回答[未読]
【23798】Re:ワークシートの有無判定 pino 05/4/4(月) 19:36 お礼[未読]
【23801】Re:ワークシートの有無判定 kobasan 05/4/4(月) 20:14 発言[未読]
【23875】Re:ワークシートの有無判定 pino 05/4/6(水) 12:25 お礼[未読]

【23791】ワークシートの有無判定
質問  pino  - 05/4/4(月) 16:49 -

引用なし
パスワード
   お世話になります。

名前が異なるワークシート毎に別作業をさせてゆきたいと考えています。
ワークシート自体の名前は全部で6種類しかないのですが、
作業をするブックによってワークシートが一定でありません。
(6種類中3種類のシートがあるやつもあれば、6種類中6種類の
フルであるブックもある。)

例1)|シート名|
AAA |BBB|CCC|DDD|EEE|FFF|
例2)
AAA |BBB|DDD|FFF|
シートの名前によってマクロ内容を変えることができるマクロを
教えてください。

宜しくお願いいたします。

【23793】Re:ワークシートの有無判定
発言  Jaka  - 05/4/4(月) 17:06 -

引用なし
パスワード
   こんにちは。

どういうような事が知りたいのかよく解らないけど、例えです。

For i = 1 To Worksheets.Count
  WSNm = Worksheets(i).Name
  MsgBox "左から" & i & "番目のシートは、" & WSNm
  Worksheets(i).Range("A1").Value = i & "番目"
  Worksheets(WSNm).Range("A2").Value = WSNm
Next

【23794】Re:ワークシートの有無判定
回答  Kein  - 05/4/4(月) 17:09 -

引用なし
パスワード
   Sub Sh_Check()
  Dim ShN As Variant
  Dim WS As Worksheet

  On Error Resume Next
  For Each ShN In Array("AAA", "BBB", "CCC", "DDD", "EEE", "FFF")
   Set WS = Sheets(ShN)
   If Err.Number <> 0 Then
     Err.Clear
   Else
     WS.Range("A1").Value = 1
     Set WS = Nothing
   End If
  Next
End Sub

などとすれば、存在しないシートはスキップすることが出来ます。

【23798】Re:ワークシートの有無判定
お礼  pino  - 05/4/4(月) 19:36 -

引用なし
パスワード
   Jakaさん、Kein さん 返答ありがとうございます。
Jakaさん書き方が解りづらくて申し訳ございません。
>  For Each ShN In Array("AAA", "BBB", "CCC", "DDD", "EEE", "FFF")
で何とかマクロが組めそうです。
ありがとうございました。

【23801】Re:ワークシートの有無判定
発言  kobasan  - 05/4/4(月) 20:14 -

引用なし
パスワード
   ▼pino さん今晩は。もう遅いかな?
>シートの名前によってマクロ内容を変えることができるマクロを
>教えてください。

select case を使ってみました。
test1,test2 の2つをのせてみます。

Sub test1()
Dim WS As Worksheet
  For Each WS In Worksheets
    Select Case WS.Name
      Case "AAA": macro_A
      Case "BBB": macro_B
      Case "CCC": macro_C
    End Select
  Next
End Sub

Sub test2()
  Select Case ActiveSheet.Name
    Case "AAA": macro_A
    Case "BBB": macro_B
    Case "CCC": macro_C
  End Select
End Sub

Sub macro_A()
  MsgBox "AAA"
End Sub

Sub macro_B()
  MsgBox "BBB"
End Sub

Sub macro_C()
  MsgBox "CCC"
End Sub

【23875】Re:ワークシートの有無判定
お礼  pino  - 05/4/6(水) 12:25 -

引用なし
パスワード
   kobasan さん 返答有り難うございます。

case を使う方法もあるのですね。
この方法を使ったマクロも作ってみました。
私のマクロ内容では、行数も少なくシンプルなマクロを
組む事が出来ました。
有り難うございます。

10073 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free