2016-06-27 5 views
0

マクロを1つのブックで実行していて、実行ごとにアクティブでないブックに移動してアクティブなセル(または別のブックに移動する前にアクティブだったセル)。アクティブでないブックのアクティブセルをハイライト表示

​​

私はオブジェクトはこのプロパティまたはメソッドをサポートしていないと言って二行目からエラーを得続ける:ここで私がしようとしているものです。シートは開いていますが、現在このコードが実行されているシートはありません。

可能であれば、これを修正し、後でカーソル/選択を次のセルに移動させることができますか?

ありがとうございます!

編集:私はまた、あなたが、私はやってないことをお勧めしますこれは、ActiveCellを使用しているmyWorkbook.Sheets("mySheet").ActiveCell.Interior.ColorIndex = 8

+0

'myWorkbook.Worksheets(" mySheet ")を試しましたか?セル(1,1).Interior.ColorIndex = 8'? (正しいアドレスに(1,1)を調整する必要があります)。 – Ralph

+0

@Ralphはい、私は早くそれを試みました。申し訳ありませんが、私はちょうど私が試した最新のバージョンを投稿しました。私はまた、ブックがマクロ対応であることを確認しましたが、それで修正されませんでした。 – pez

答えて

0

active cellオブジェクトはworksheet objectに属しません。これは、1つのシートにつき1つではなく、アクティブなセルオブジェクトが1つしかないためです。あなたが直接そのようActiveCellの上で呼び出すことができてMySheetアクティブになったら

実施例Iは@BruceWayneに同意

myWorkbook.Sheets("mySheet").Activate 
ActiveCell.Interior.ColorIndex = 8 

。できるだけSelectActivateを呼ぶことは避けてください。

+0

'Activate'を呼び出す際の欠点は何ですか?非アクティブなブックのセルを呼び出さずにハイライト表示できますか? – pez

+1

@pez - あなたが見たように、 'Activate'を使うためには、実際にセルを'活性化 'しなければなりません。もっと良い方法は、データを直接扱うことです。 'ActiveCell'が' C1'になることが分かっているなら、 'Range(" C1 ")を使う方が良いでしょうInterior.ColorIndex = ...'また、 'ActiveCell'または' ActiveSheet'はisn 'いつもあなたが考えることがあるので、避ける方が良いです。 – BruceWayne

+1

@ BruceWayneの答えには、いくつかの背中を強調する[リンク](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)があります。 1つの問題は、コード実行中にユーザーがフォーカスを移動するのを止めることができないことです。一般的には明示的にすることが最善です。いくつかの基準がある場合、正しいセルを選択するコードは、UIの状態をチェックするより堅牢です。 –

1

を試してみました。 Avoid using .Select/.Activate

あなたがアクティブセルを強調しようとしている場合は、ワークシートのモジュールにマクロを配置する必要がありますようにあなたのコードでは、指摘

Private Sub Worksheet_SelectionChange(ByVal target As Range) 
    Target.Interior.ColorIndex = 8 
End Sub 

、あなたは今までのセルを選択しませんエラーが表示されます。

また、このメソッドは他のすべてのセルをハイライト表示します。他のセルを強調表示する必要がない場合は、そこにある1行の直前にcells.interior.colorindex = 0を追加します。また、これに対処するhere's a thread。あなたはVBAなしであなたがしようとしていることをすることができます。

+0

これはまだ別のブックからでも実行できますか?私が強調しようとしているシートは別のワークブックにあります。強調表示するブックのパラメータを追加するように編集できますか? – pez

+0

@pez - あなたのマクロでは、新しいブックのどのセルを強調表示するのか知っていますか?それはそれをより簡単にするでしょう。このコードを呼び出すコードはありますか? – BruceWayne

+0

はい。私が強調しようとしているシートは、基本的に列Aの約1,000の数字のリストです。今までの最初の99を処理した場合、マウス/カーソル(VBAなし)で選択した最後のセルはセル100でした。ハイライトしたいセルです。最初の99は既に強調表示されています。次は101になるでしょう。私はむしろ、できるだけ番号をハードコードするのではなく、最後に選択したセルを強調表示するように書きます。 – pez

関連する問題