2011-08-12 5 views
-1
sheet1.activate 
activesheet.range(cells(2,"Q"),cells(40,"K")).select 'here the error occurs 
selection.copy 

上記のコードはsomtimesで動作し、時にはオブジェクト変数が設定されていないということを意味するエラーをスローします。なぜ上記のコードが動作していないと、私は再び動作し、ときどきdontファイルを開くと。しかし、なぜそれが起こるのかわからない。私は構文上の間違いを犯していますか?もしそうなら、正しい方法を教えてください。また、一連の範囲を選択するための効率的な方法はありますか?上記以外?事前にありがとう私は何をしていますか?

+0

を使用している、求めることができる:ちょうど書きますか? –

+0

前後に何をしていますか?あなたのシート1は定義されていますか? – JMax

答えて

5

このエラーの原因は通常、Setキーワードの省略です。

Dim w as Worksheet 
w = Sheet1 ' throws error 91 
' Correct syntax: 
' Set w = Sheet1 

エラーが発生した行を教えていただければ、より具体的な回答が表示されます。コードサンプルの構文は正常ですが、エラーはコード内の別の行にある可能性があります。おそらく質問には表示されません。

範囲を選択するための「効率的な」方法はもうありますか?個人的には、表示方法が好きではなく、文字列をCellsの引数として使用します。文字列は乱雑であり、しばしば間違いにつながり、作業効率が低下します。なぜ:

Sheet1.Range(Cells(2,18),Cells(40,11)).Select 
' or 
Sheet1.Cells(2,11).Resize(39,8).Select 
' or 
Sheet1.Range("K2").Resize(39,8).Select 

または、K2を定義します。あなたのシートに名前付き範囲としてQ40、例えばそれを呼び出します"myRange"、および次の操作を行います。

Sheet1.Range("myRange").Select ' My personal favourite 

しかし、なぜあなたはSelectを使用していますか?これは通常必要ではありません。

Sheet1.Range("myRange").Copy 

をしかし、私はなぜあなたはエラーが発生した何行目では、それ自体が汚い方法でCopy、...

+0

うん、私はそれを手に入れた!だからワークシートごとにワークシートとしてdim wを使う必要があります。ありがとうございます – niko

+1

貧しい質問に対する豊富な答えです。 @ Jean-Françoisの+1。 –

+0

@nikoはあなたの問題を解決したので、答えを受け入れるのがうれしいです(http://meta.stackexchange.com/q/5234/157692で説明されています)。 –

関連する問題