重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【6/2終了】教えて!goo新規会員登録

エクセル2007です。
vbaで シート内のコマンドボタンからプログラムを起動させ、
ActiveCell.Valueから取得した値を別シートにあるテーブルのフィルター値として
活用したいのですが、活用する前に別のシートをアクティブにすることで、
解除されてしまいます。

-------------------------
Sub test()
Dim nber As String
nber = ActiveCell.Value

Worksheets("sheet1").Activate
ActiveSheet.ListObjects("テーブル1").Range.AutoFilter Field:=2, Criteria1:=nber

-------------------------

上記、nberがアクティブで流動しないよう、固定の変数としてフィルター値に活用するには
どのようにしたらよろしいでしょうか?

VBA初心者のため、コード等の記載に誤りがあればご指摘ください。
よろしくお願いいたします。

A 回答 (1件)

試してみましたが、何の問題も発生しませんね。


エラーチェックを着けてみましたが、いかがでしょうか。

Sub TestBottn1_Click()
Dim nber As String
Dim Rng As Range
nber = ActiveCell.Value
Set Rng = Worksheets("Sheet1").ListObjects("テーブル1").Range
If Application.CountIf(Rng.Columns(2), nber) = 0 Then
  MsgBox "検索文字は正しくありません。" & nber, vbExclamation
  Exit Sub
End If
Worksheets("Sheet1").Activate
ActiveSheet.ListObjects("テーブル1").Range.AutoFilter Field:=2, Criteria1:=nber
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。
補足すると、ワークシートが2つあり、nber = ActiveCell.Valueの後、別のシートに移動したため、解除されてしまったようです。
setで別シートのテーブルを指定したことで、回避されました。

お礼日時:2017/11/21 11:12

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