アプリ版:「スタンプのみでお礼する」機能のリリースについて

特定のシートのみ除外してそれ以外のシートの情報のみ集約させるにはどうすればよいでしょうか。(例えばですが、シート名に■が付いている場合のみ無視して、それ以外のシート名のシートをすべて集約したい)

<特定のシートのみ集約するマクロの一文>
Const FIND_STR = "■"
(途中省略)
If sh.Name Like "*" & FIND_STR & "*" Then
sh.UsedRange.Offset(1).Copy _
Destination:=dWS.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End If

マクロ中の一文ですが、「シート名に■がある場合(集約する)」という文章で、■があるシートのみひろってきて処理(集約等)を行います。このマクロはうまく作動します。
これを「シート名に■がない場合(集約する)」という文章に変更するにはどうすればよいのでしょうか。Likeの部分を<>に変更してもマクロがうまく作動してくれません。

簡略化して質問していますが、
実際はとあるエクセルブックにある多くのシートの情報(シート名もばらばら)を別のエクセルブックに集約するものの、一部のシートの情報は集約不要です。集約不要なシートのみシート名に何かの印、例えばですが今回のように「■」をつけて集約しないようにしたいです。

*当方、WIN10、エクセル2016です。
*If sh.Name~の条件文の変更、修正が主目的です。
*エクセルブックには、いろいろなパターンのシート名が存在しますが、集約除外したいシートのみシート名に■をつける(これは事前の手作業の話です)などして除外したいです。

A 回答 (3件)

こんばんは!



>シート名に■がない場合・・・

If Not sh.Name Like "*" & FIND_STR & "*" Then

だとどうなりますか?m(_ _)m
    • good
    • 0
この回答へのお礼

あわあわわわあわわわ・・・
これも希望通りの結果になってしまいました。
Notかぁ、そりゃそうですよね。記号なんかいじってる場合じゃありませんでした。
ありがとうございます!!!

お礼日時:2020/06/29 23:25

No.2の回答にある Not を使うほうがエレガントですね。

(笑)

Like演算子の否定は?:エクセルマクロ・Excel VBAの使い方/条件分岐
https://www.relief.jp/docs/excel-vba-not-like.html

この記事だと、カッコを入れるとわかりやすいよって。
もちろん、無くても大丈夫だけど。

If Not (sh.Name Like "*" & FIND_STR & "*") Then
    • good
    • 0
この回答へのお礼

ありがとうございます!
とても参考になります
いろんな方法、わかりやすさ等、工夫の余地がありますね。

お礼日時:2020/06/30 07:59

手っ取り早いのは


If sh.Name Like "*" & FIND_STR & "*" Then
Else
【処理】
End If

と、Then の場合の処理を空にしておく方法かな。
    • good
    • 0
この回答へのお礼

ぐうぉあああああーーー
一発で希望の結果が得られました。ありがとうございます。
今後は迷わずThenの処理を空にしようと思います。

でも気になるのですが、
Likeは「シート名に■があるっぽいシートは拾ってこい」という命令文で、Likeを<>にすることによって、「シート名に■があるっぽシート以外を拾ってこい」という命令文にはならないのでしょうか。If文を修正する方法は無いのでしょうか。(迷わずThenの処理を空にすると言っておきながらすみません)

お礼日時:2020/06/29 23:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A