[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA 変数を使用して含まない』(未知の世界)
部全体から除外したい課があるとき。
例えば、部12Bから、課12B22を除外したい時。
(他の部によっては、除外したい課が3つあるときもありますので、
変数を3つまで作っています。が、下記のコードは、まだ除外がうまくいって
いないため、ka1の分しか書きこんでいません。)
フィルタをVBで書き込んで「含まない」を検索するときは『Criteria1:="<>*値*"』なので、
12B22を除外したいので
.AutoFilter Field:=2, Criteria1:="<>*" & ka1の箇所を
.AutoFilter Field:=2, Criteria1:="<>*ka1*"…こんな感じで変数を使用して
「含まない」にしたいのですが、できません。
&を付け加えたりいろいろしてみたのですが、うまくいきません。
『〜で終わらない"<>*" & ka1』なら一応、検索結果は出たのですが、
できれば、含まないの方がいいのですが、変数を使用してできないのでしょうか?
例…12Bの部全体から12B22を除く。の件数の結果を貼付シートにコピペする。
【フィルタ】シート
| A | B | C 1 | 部 | 課 | 値 2 |12B | 12B55 | 0 3 |223 | 22311 | 9 4 |12B | 12B22 | 1 5 |223 | 22333 | 8 6 |12B | 12B55 | 5 7 |12B | 12B55 | 4 8 |12B | 12B75 | 6 9 |12B | 12B34 | 4 10|999 | 99976 | -3 11|12B | 12B88 | 2 12|12B | 12B55 | 7
【貼付】シート
| A | B | 1 | 0〜5 | 6〜10 | 2 | 5 | 2 |
VBAのコード
Dim bu As Variant
Dim ka1 As Variant
Dim ka2 As Variant
Dim ka3 As Variant
Sub test()
Dim firuta As Worksheet Dim sh As Worksheet
Set firuta = Worksheets("フィルタ") firuta.AutoFilterMode = False firuta.Range("A1").AutoFilter
Set sh = Worksheets("貼付")
Do bu = Application.InputBox("部を入力して下さい" & vbCrLf & _ "ただし、半角入力でお願いします。", Type:=2)
bu = StrConv(bu, vbNarrow)
If bu = False Then Exit Sub
If Application.CountIf(firuta.AutoFilter.Range.Columns(1), bu) > 0 Then Exit Do MsgBox "該当する部がありません。[" & bu & "]"
Loop
Do ka1 = Application.InputBox("除外する課を入力して下さい。" & vbCrLf & _ "ただし、半角入力でお願いします。", Type:=2)
ka1 = StrConv(ka1, vbNarrow)
If ka1 = False Then Exit Do
If Application.CountIf(firuta.AutoFilter.Range.Columns(2), ka1) > 0 Then Exit Do MsgBox "該当する課がありません。[" & ka1 & "]" Loop
With firuta.AutoFilter.Range .AutoFilter Field:=1, Criteria1:=bu .AutoFilter Field:=2, Criteria1:="<>*ka1*" .AutoFilter Field:=3, _ Criteria1:=">=0", _ Operator:=xlAnd, _ Criteria2:="<=5"
sh.Range("A2").Value = WorksheetFunction.Subtotal(3, firuta.AutoFilter.Range.Columns("C")) - 1
.AutoFilter Field:=3, _ Criteria1:=">=6", _ Operator:=xlAnd, _ Criteria2:="<=10"
sh.Range("B2").Value = WorksheetFunction.Subtotal(3, firuta.AutoFilter.Range.Columns("C")) - 1
End With
End Sub
まだまだ、VBは謎の世界で、調べながら書いたりしてるのでもしかしたら、使いどころ間違ってるなどありましたらよろしければ、お教えください。
以上、よろしくお願します。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
.AutoFilter Field:=2, Criteria1:="<>*" & ka1 & "*"
ですか?
(ウッシ) 2015/05/25(月) 11:33
できました!!
うぅ、わかる人はこんなにすぐできるのに(:_;)
助かりました。
ありがとうございます!!
(未知の世界) 2015/05/25(月) 11:43
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.