|
こんにちは。
解決されたようで何よりです。
また解決を知らせてくれたのは、good jobです。
ところで、
こちらでマナさんがいくつかのステップに分けて、
トライしやすいように助言されていたのですが、
なぜそれにトライされようとしなかったのでしょうか。
マナさんはもちろん正解は瞬時に分かったわけで、
あなたが理解し易いように、小分けにして回答してくださったいたのです。
特に、16/7/23(土) 9:46 の助言は、内容の理解に有益なものでした。
それに沿って考えを進めていけば、答えに到達できたはずです。
Like演算子の理解につながる適切な例も示されています。
>3)の例です。理解できますか。
と問いかけられていますが、なぜそれに応えられなかったのでしょう。
VBAを学習しようとしているのではないのですか。
単にコードが欲しいだけですか?
ご自分で取り組もうという気はまったくないのですか?
残念なことです。
ちなみに、知恵袋での回答をそのまま転記されているが、
それはそれで動作はしますが、ちょっと疑問もあります。
(1)コードは普通はきちんとインデントをつけるものです。
知恵袋ではインデントが崩れやすいのでやむを得ない面もあるが、
実際に使う場合や、他に転用するなら、
きちんとインデントをつけるべきですね。
(2)逆順にしないといけないのは、数値によるindexでコレクションを参照しているからで、
質問にあった(これはマナさんの回答をそのまま転用しているのですが)
For Each ..Nextをそのまま使えば、逆順など意識する必要はありません。
(3)ついでに、知恵袋での別の回答について言えば、
If InStr(Workbooks(i).Name, KeyWord) > -1 Then
Workbooks(i).Close
End If
も回答者に勘違いがあります。
これでは、すべてのブックが閉じられるはずです。
keywordを含まない場合はInStrは 0 を返すのです。
> 0 とすべきところを確認を怠ったのでしょう。
ということで、
Sub test()
Dim wb As Workbook
Dim keyword As String
keyword = "pon"
For Each wb In Workbooks
If wb.Name Like "*" & keyword & "*" Then
wb.Close
End If
Next
End Sub
で良いでしょう。
マナさんの助言に単に .closeを足すだけですよ。
他人の助言をしっかり受け止めて下さい。
単にコードだけ欲しがるのではなく。
|
|