2017-01-18 3 views
0

申し訳ありませんが、これは合計noob投稿です(今後予定があります)。 2週間前に私の仕事でいくつかの簡単なVBAプロジェクトを取ることを決めました.VBAに関する以前の知識はなく、このサイトは豊富な知識でした。私は成功したマクロまたは2を構築しましたが、今はちょうどそれを調整しています。VBA - オートフィルタが次のページに移動する結果が返されない場合

私がやろうとしていること: 私はそれを受け取るたびに行数が変化するワークシートを持っています。私は特定の単語を含む任意のセルの列を見つける(または可能であればオートフィルタ)。その単語が存在する場合は、そのセルの背景色を強調表示します。

現在のコードで実行している問題は、表示されているセルのlastRowにのみフィルタを適用し、結果がゼロの場合は最後に表示されたセルの後ろのセルをシートの下端まで塗りつぶします。だから私は巨大な色の柱で飾る。

私の頭脳をこの日につけていました。

ActiveSheet.Range("$A$1:$AO$" & lastRow).AutoFilter Field:=15, Operator:= _ 
    xlFilterValues, Criteria1:=("=*Repromotion*") 
    lastRow = Range("O2").End(xlDown).Row 
    Range(Range("O2"), Range("O" & lastRow)).Select 

With Selection.Interior 
    .Pattern = xlSolid 
    .PatternColor = 16777215 
    .Color = 16776960 
    .PatternTintAndShade = 0 
End With 

ご協力いただければ幸いです。

+0

ようこそスタックオーバーフロー!デバッガの使い方を学ぶ必要があるようです。 [補完的なデバッグ手法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)にご協力ください。その後も問題が残っている場合は、もう少し詳しくお聞かせください。 –

+0

私は読んで波を作りません、その新しい人になりたくありません。私はデバッグテクニックの記事を読んでおり、非常に有益です。私のコードは、いつでもエラーになることはありません。予想通りに実行していると思います。しかし、それは私が心に持っていることをしていません。 – Scott

+1

私はそれが私の厚さであるかどうかはわかりませんが、どういうことが "期待どおりのパフォーマンス"と "私の心にあることをしていない"の両方になることができますか? –

答えて

0

最後の行を見つける方法を変更することができます。下に移動し、下から検索して検索します。

lastRow = Cells(Rows.Count, "O").End(xlUp).Row 

必要に応じてヘッダー行ではないことを確認してください。

+0

私は現在のコードを使用してxlUpを使ってxlDownを切り替えるだけでなく、あなたが提案したものを試してみることで問題が発生しました(クイックレスポンスで感謝します)。これは、セル "O2"フィルタ基準で見つかったレコードがあるかどうか。だから私はヘッダーをブロックすることはできません – Scott

+0

あなたは現在のコードを使用することはできませんが、xlUpにxlDownを切り替え、それは常にあなたにO1:O2を与えるだけです。だから、私はLastRowがヘッダーを返さないことを確認することを提案したのです。 – Rdster

関連する問題