- ベストアンサー
excelのvbaでのシート指定が時々おかしい
時々なんですが、excelのVBAでシート指定をしているにもかかわらず、その指定がされてない時があります。 たとえば sheets("sheet1").select sheets("sheet2").select RANGE("A1") = "aa" とした時に、sheet1にaaが入ってしまうような感じです。 毎回なるわけではないので、指定の方法が間違ってるとかではない気がするんですが…。 なぜこのようなことがおきるのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。maruru01です。 原因はともかく、複数のシートを扱うなら、毎回きちんとシートまで指定すべきです。 あと、セルへ代入する時は、Rangeオブジェクトのメソッド(Value)を省略するのも止めた方がいいと思います。 'アクティブシートを指定する場合 Sheets("Sheet2").Activate ActiveSheet.Range("A1").Value = "aa" '特定のシートを指定する場合 Sheets("Sheet2").Range("A1").Value = "aa"
その他の回答 (2)
- maruru01
- ベストアンサー率51% (1179/2272)
Pasteメソッドには、必ずWorksheetsオブジェクトが必要です。 さらに、Pasteメソッド実行前には必ず貼り付ける範囲を選択しておきます。 したがって、 Sheets("印刷用").Range(Last3 + 1 & ":" & Last3 + 1).Select ActiveSheet.Paste となります。 今一度、マクロの自動記録や、ヘルプを確認して下さい。
- maruru01
- ベストアンサー率51% (1179/2272)
>これは、また別の原因でしょうか? おそらく別件で、 >Sheets("Sheet1").Rows(w & ":" & w).Select ↓ Sheets("Sheet1").Range(w & ":" & w).Select です。 あといちいちSelectしなくても、 Sheets("Sheet1").Range(w & ":" & w).Copy の1行で十分です。
お礼
回答ありがとうございます。 上記の部分は無事できたみたいです。 上記の続きの部分で同じく「エラー400」が出てしまっているのですが。。。 -------------------- For w = 2 To Gyou If Sheets("Sheet1").Cells(w, 1) <> "★" Then Sheets("Sheet1").Range(w & ":" & w).Copy Last3 = Sheets("印刷用").Range("B36635").End(xlUp).Row Sheets("印刷用").Range(Last3 + 1 & ":" & Last3 + 1).Select '最初は 'Sheets("印刷用").Cells(Last3 + 1,1).Select 'としてました。 Paste 'Sheets("印刷用").Range(Last3 + 1 & ":" & Last3 + 1).Pasteでもok? End If Next -------------------- 今度はどこがダメなんでしょうか?
お礼
回答ありがとうございます。 毎回記述するよう、気をつけたいと思います。 現在、下記のようなものを書いたのですが、エラー400が出てしまうんです。 ---------- For w = 2 To Gyou If Sheets("sheet1").Cells(w, 1) <> "★" Then Sheets("Sheet1").Rows(w & ":" & w).Select Selection.Copy Sheets("印刷用").Select End If Next ---------- これは、また別の原因でしょうか?