Sub Mondai4()
Dim w As Worksheet
For Each w In Worksheets
Debug.Print w.Name
Debug.Print Mid(w.Name, Len(w.Name) - 1)
Debug.Print Right(w.Name, 2)
If Mid(w.Name, Len(w.Name) - 2) = "印刷" Then '【Rightが思いつかず、Midでやりました】
'If Right(w.Name, 2) = "印刷" Then 【お手本の答え】
w.Tab.ColorIndex = 13
End If
Next
End Sub
>Sub Mondai4()
> Dim w As Worksheet
> For Each w In Worksheets
> Debug.Print w.Name
> Debug.Print Mid(w.Name, Len(w.Name) - 1)
> Debug.Print Right(w.Name, 2)
>
> If Mid(w.Name, Len(w.Name) - 2) = "印刷" Then '【Rightが思いつかず、Midでやりました】
> 'If Right(w.Name, 2) = "印刷" Then 【お手本の答え】
>
> w.Tab.ColorIndex = 13
> End If
> Next
>End Sub
>
円崎雄一さんの投稿
(投稿ID: 184)
問題4の中での質問になります。
発展編の内容とは関係がない部分での質問で申し訳ありません。
"印刷"の文字を抽出するために、Mid関数とLen関数を使いました。
(Right関数が思いつかなかったため)
イミディエイトウィンドウでは、"印刷"の文字が抽出できているように
見えるのですが、IF文の分岐がうまくできませんでした。
(タブの色付けを実行しないでEnd Ifに行ってしまいます)
Right関数で得られた値と、どのように違うのかがわかりませんでした。
どうぞよろしくお願いいたします。
小川 慶一さんのコメント
(コメントID: 940)
おもしろい取り組みですね!いろいろトライするのはいいことだと思います。
ご質問の件。
イミディエイトウィンドウへの出力では
Mid(w.Name, Len(w.Name) - 1) '[1]
となっていますが、
条件分岐では、
Mid(w.Name, Len(w.Name) - 2) '[2]
となっています (^^;
こういうミスを減らすには、ですが。。
ずばり、[2]を書くときには、[1]をコピペして貼りつけてください。そうすると、確実です。
>いつもお世話になります。
>問題4の中での質問になります。
>発展編の内容とは関係がない部分での質問で申し訳ありません。
>
>"印刷"の文字を抽出するために、Mid関数とLen関数を使いました。
>(Right関数が思いつかなかったため)
>
>イミディエイトウィンドウでは、"印刷"の文字が抽出できているように
>見えるのですが、IF文の分岐がうまくできませんでした。
>(タブの色付けを実行しないでEnd Ifに行ってしまいます)
>
>
>
>Right関数で得られた値と、どのように違うのかがわかりませんでした。
>どうぞよろしくお願いいたします。
円崎雄一さんのコメント
(コメントID: 942)
お恥ずかしい・・・。(^^;
キーボード入力の上達を願い、
マクロを書くときも、いちいち手で入力しておりました。
今後は、
マクロを書く時はショートカットとコピペを徹底的に心がけます。
キーボードの練習は別途特打で練習します。
有り難うございました!
小川 慶一さんのコメント
(コメントID: 943)
いえいえ、最初はよくあることです (^^;
この手の間違いを検出する方法のひとつは、
声を出して、指さし確認しながらプログラムを点検することです。
[1]のプログラムを大きくはっきりした声を出しながら点検していたとすれば、[2]のプログラムを読み上げたところで「ん・・・?」と思ったかもしれません。
ショートカットとコピペの技術も大切です。
タイピングの練習と並行して行ってください!
ひきつづき、お楽しみを☆
>小川先生
>
>お恥ずかしい・・・。(^^;
>キーボード入力の上達を願い、
>マクロを書くときも、いちいち手で入力しておりました。
>
>今後は、
>マクロを書く時はショートカットとコピペを徹底的に心がけます。
>キーボードの練習は別途特打で練習します。
>
>有り難うございました!