こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBA Worksheets(())

Excel2016をWindows10で使用しています。
以下のマクロが実行できません。

Option Explicit
Sub raco()

Worksheets("Sheet(3)").Range("$B$2:$D$4").FormulaR1C1 = "=Sheet(2)!RC"

End Sub
Sheet(3)をSheet3,Sheet(2)をSheet2 と書くとSheet3にSheet2の内容がコピーできます。
Sheet(3)のままだと、アプリケーションの定義またはオブジェクトの定義のエラーです。
と出ます。
Sheet(3)のままで、コピーできるようにする方法を教えてください。お願いします。

投稿日時 - 2017-02-25 20:37:07

QNo.9298205

困ってます

質問者が選んだベストアンサー

>Sheet(3)のままで、コピー

とは、どのシートの内容をどのシートにコピーすれば良いのでしょうか?
 「Sheet3」というシート名のシートに、「Sheet2」というシート名のシートの内容をコピーするのでしょうか?
 それとも「Sheet(2)」というシート名のシートに、「Sheet(3)」というシート名のシートの内容をコピーするのでしょうか?
 それとも「Sheet1 (2)」というシート名のシートに、「Sheet1 (3)」というシート名のシートの内容をコピーするのでしょうか?



 「Sheet3」というシート名のシートに、「Sheet2」というシート名のシートの内容をコピーする場合には、

Worksheets("Sheet3").Range("$B$2:$D$4").FormulaR1C1 = "=Sheet2!RC"

になります。


 一方、「Sheet(2)」というシート名のシートに、「Sheet(3)」というシート名のシートの内容をコピーする場合の様に、小括弧でくくられた数字が付いているシート名のシートを参照元にする様なワークシート関数を設定するマクロとする場合には、

Worksheets("Sheet(3)").Range("$B$2:$D$4").FormulaR1C1 = "=Sheet(2)!RC"

ではなく、

Worksheets("Sheet(3)").Range("$B$2:$D$4").FormulaR1C1 = "='Sheet(2)'!RC"

のように、セルに設定するワークシート関数内の「括弧付きの数字付きのシート名」の方を「'」(半角文字のアポストロフィ)でくくらなけばなりません。(「Worksheets("Sheet(3)").」の中の「Sheet(3)」の方には「'」を付けてはいけません)


 それと、「Sheet1 (2)」というシート名のシートに、「Sheet1 (3)」というシート名のシートの内容をコピーする場合には、

Worksheets("Sheet1 (3)").Range("$B$2:$D$4").FormulaR1C1 = "='Sheet1 (2)'!RC"

となるのですが、シート名を間違えて

Worksheets("Sheet1(3)").Range("$B$2:$D$4").FormulaR1C1 = "='Sheet1(2)'!RC"

などの様にシート名内にある半角スペースを入れ忘れてしまわないように注意して下さい。

投稿日時 - 2017-02-26 04:45:28

お礼

場合に分けての説明、ありがとうございます。

投稿日時 - 2017-02-26 20:09:23

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

エクセルワークシートを1つ特定するには
(1)インデックス番号指定
(2)シート名指定
(3)その他 ActivesheetやPrebiousやNext
の3つがある。
その(1)、(2)の2つがよく使えわれる。
(1)(2)は、WorksheetのコレクションのWorksheets(sがつく)の1つを特定するわけです。名前にWorksheets("Sheet(3)").の(3)など、エクセルが自動的に振った番号の場合(Sheet(3)はこれだろう)と、配列の要素指定などで()を付けるときと、初心者には紛らわしいので注意すること。Sheets(3)とSheet(3)(sなし)は指定カテゴリが違うことを判ってないのかな。
シート名の指定の場合は文字列を指定となるので、Worksheets("Sheet(3)")とダブルクオートで囲んだもの。
VBAをやり始めて、まだ日が浅いようなので、VBAの基本のキである、VBAのブック、シート、セルの指定の仕方の多様性(バリエーション)をWEBか解説書で勉強のこと。

投稿日時 - 2017-02-26 09:50:38

お礼

VBAのブック、シート、セルの指定の仕方は、多様なんですね。
ご指摘ありがとうございます。

投稿日時 - 2017-02-26 20:04:30

ANo.1

「Sheet3」というのは、シートの名前です。

エクセルの画面の下に表示されている、シートの名前そのものです。

「Sheets(3)」は、左から何番目のシート、の意味です。

この場合は、「Sheets()」というように、複数形(最後に「s」が付く)で、全く違う意味です。

また、左端から何番目は「Worksheets()」と書いても同じです。

また、シートの名前の場合は、「"Sheet3"」と、「""」でくくりますが(名前(=文字列))、「Sheets(3)」は、文字列ではありません。

したがって、「""」でくくってはいけないのです。

「""」でくくると、マクロは、「Sheets(3)」という「シート名」だと思ってしまいます。

投稿日時 - 2017-02-25 22:25:55

お礼

シート名と、左から何番目のシートか区別するように、気を付けます。
ありがとうございます。

投稿日時 - 2017-02-26 20:06:46