- ベストアンサー
VBAを使用して特定のシートが選択された場合にセルに入力する方法
- Excel365のVBAを使用して、特定のシートが選択されている場合にセルに入力する方法を説明します。
- 「あ」というシートが選択されている場合は、「あ」シートの「A1」セルに「a」と入力します。同様に、「い」というシートが選択されている場合は、「い」シートの「A1」セルに「i」と入力します。
- それ以外のシートが選択されている場合には何もしないようにします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
「Sheets("あ").Activate」で返してくるTrueを条件にしようとしてるんでしょうけど、Trueが返ってくるということはSheets("あ")をActivateすることに成功しているということなので、その時点で「あ」シートが選択されます。 試しにブレークポイントを設定して順番に確かめてみてください。 他のシートを選択していても「If ActiveSheet.Name = "あ" Then」のところで「あ」シートが選択されるはずです。 選択されたシートの名前で判断させたいなら、「If ActiveSheet.Name = "あ" Then」とした方が間違いがないですよ。 select文使って Select Case ActiveSheet.Name Case "あ" Range("A1") = "a" Case "い" Range("A1") = "i" End Select みたいな感じにしても良いですし。
その他の回答 (2)
- SI299792
- ベストアンサー率47% (772/1616)
' Sub Macro1() ' If ActiveSheet.Name = "あ" Then [A1] = "a" ElseIf ActiveSheet.Name = "い" Then [A1] = "i" End If End Sub
お礼
ctiveSheet.Name なんですね。 アクティブにしていたのが悪いのだとわかりました。 ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
VBAのコードのことが頭いっぱいなのでしょうが、こういうところで質問するときは、 こういうことが必要になる「状況」というか、「事情」を、文章で記述し、 回答者に答え(VBA)コードをもらうのが、良いと思う。初心者の場合なら、発想やロジックそのものがべストやベッターではないと思える場合が多いから。 ーー 質問のケースが必要な場面が思いつかない。むしろシート選択の「イベント」との 関連で、こういうニーズが起こるように思うが、そのことは触れてない。 Private Sub Worksheet_Activate() がないので。 ーー 特殊なケース。シートを3つ以上選択しておいて Sub 選択中のシート枚数と名前を取得する() MsgBox _ ActiveWindow.SelectedSheets.Count MsgBox _ ActiveWindow.SelectedSheets(2).Name '2番目 MsgBox _ ActiveWindow.SelectedSheets(3).Name '3番目 ’この後シート名で処理を分岐記述 End Sub こういうWundow系のVBAも使うべき場合がある。
お礼
確かに、マクロが出来ず、混乱状態でした。 出来るようになって安心して自分の質問を読み返しました。 ありがとうございました。
お礼
出来ました。 ありがとうございました。 仰る通り、ブレイクポイントしたら、最初の指定の仕方が間違っていました。