Excel VBA質問箱 IV

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

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


218 / 13645 ツリー ←次へ | 前へ→

【81473】IF文ーアクティブシート名と一致だったら ぐりぐり 20/9/11(金) 10:43 質問[未読]
【81474】Re:IF文ーアクティブシート名と一致だっ... γ 20/9/11(金) 12:21 回答[未読]
【81475】Re:IF文ーアクティブシート名と一致だっ... [名前なし] 20/9/11(金) 13:03 質問[未読]
【81476】Re:IF文ーアクティブシート名と一致だっ... [名前なし] 20/9/11(金) 13:43 発言[未読]
【81477】Re:IF文ーアクティブシート名と一致だっ... γ 20/9/11(金) 14:48 発言[未読]

【81473】IF文ーアクティブシート名と一致だった...
質問  ぐりぐり  - 20/9/11(金) 10:43 -

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

Activeのシート名が一致している場合は、ある動き(ここでは"メッセージ表示"としています)をする、というモジュールを作成したいのですが、上手く動きません。

どこをどう直せばいいのか判らず、助けていただけますでしょうか。
よろしくお願いします!


Dim wsActive as Worksheet
Dim ws1 as Worksheet

Set wsActive = ActiveSheet
Set ws1 = Worksheet("MSAD")

if wsActive.name = ws1 then

Msgbox"OK"

Else

Msgbox"ちがうよ"

End if

【81474】Re:IF文ーアクティブシート名と一致だ...
回答  γ  - 20/9/11(金) 12:21 -

引用なし
パスワード
   if wsActive.name = ws1 then
  ↓
If wsActive.Name = ws1.Name Then
としてください。

なお、投稿にあたっては、VBEの画面から
直接コピーペイストして、手打ちは避けてください。
Set ws1 = Worksheet("MSAD")はエラーになるはずです。

【81475】Re:IF文ーアクティブシート名と一致だ...
質問  [名前なし]  - 20/9/11(金) 13:03 -

引用なし
パスワード
   ▼γ さん:

ご返信をありがとうございます。
下のように、ws1を使用せずに、シート名をダイレクトに書きにし、“Name”もドットを打って出てくるリストから選択したのですが、“.Name”が“.name”と小文字に自動変更してしまいます。そして、この行がエラーになります。
どうしてなんでしょうか。

Dim wsActive As Worksheet
Set wsAvtive = ActiveSheet

If wsActive.Name = Worksheets("MS&AD").Name Then

If wsActive.name = Worksheets("MS&AD").name Then


>if wsActive.name = ws1 then
>  ↓
>If wsActive.Name = ws1.Name Then
>としてください。
>
>なお、投稿にあたっては、VBEの画面から
>直接コピーペイストして、手打ちは避けてください。
>Set ws1 = Worksheet("MSAD")はエラーになるはずです。

【81476】Re:IF文ーアクティブシート名と一致だ...
発言  [名前なし]  - 20/9/11(金) 13:43 -

引用なし
パスワード
   >▼γ さん:

解決しました!

If ActiveSheet.name = "MS&AD" Then

でした。


>
>ご返信をありがとうございます。
>下のように、ws1を使用せずに、シート名をダイレクトに書きにし、“Name”もドットを打って出てくるリストから選択したのですが、“.Name”が“.name”と小文字に自動変更してしまいます。そして、この行がエラーになります。
>どうしてなんでしょうか。
>
>Dim wsActive As Worksheet
>Set wsAvtive = ActiveSheet
>
>If wsActive.Name = Worksheets("MS&AD").Name Then
>↓
>If wsActive.name = Worksheets("MS&AD").name Then
>
>
>>if wsActive.name = ws1 then
>>  ↓
>>If wsActive.Name = ws1.Name Then
>>としてください。
>>
>>なお、投稿にあたっては、VBEの画面から
>>直接コピーペイストして、手打ちは避けてください。
>>Set ws1 = Worksheet("MSAD")はエラーになるはずです。

【81477】Re:IF文ーアクティブシート名と一致だ...
発言  γ  - 20/9/11(金) 14:48 -

引用なし
パスワード
   wsはループの中での話を単純にした説明だったのかと思っていました。
簡単な話だったのですね。

wsとだけ指定したときに、それがNameプロパティに値を返すわけではないですね。
しっかりプロパティを付ける必要があるということです。
今後、こうした場面も多かろうと思いますので、記憶下さい。

なお、nameが小文字になってしまう件ですが、
過去に、
Dim name As String
といった変数宣言をした副作用です。
Dim Name As String
とダミーで宣言して、直ぐに消せば、元のように
ws.Nameと戻るはずです。

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