
【質問の質問】VBAにおける「&」の役割について
◾️以下のコードの「&」はなぜ必要なのでしょうか?
Selection.Consolidate Sorces:="'[" & ThisWorkbook.Name & "]貼り付け'!R5C2:R508C4", Function:=xlSum, TopRow:=False, LeftColumn:=True, CreateLinks:=False
の
[" & ThisWorkbook.Name & "]
↑この「」
&の役割がいまいちわかりません。。
なぜそのままThisWorkbook.Nameでエラーが返るのでしょうか??
VBAに詳しい方宜しくお願い致します。
※ 尚、この質問は私が別で行った質問において、解決した問題の更問いとなっております。
初心者であるため、更問をしたにも関わらず、質問を閉じてしまいました。
重複してる部分が存在し、申し訳ございません。
No.5ベストアンサー
- 回答日時:
すみません、No.1の内容が間違ってました。
-----------------
たとえばマクロが書かれているbookの名前が「Book1」だとすると
【'[】 と 【Book1】 と 【]貼り付け'!R5C2:R508C4】
をつなげるってことになります。
なので、
"'[" & ThisWorkbook.Name & "]貼り付け'!R5C2:R508C4"
この部分は、↓のような文字列になります。
'[Book1]貼り付け'!R5C2:R508C4 ←ココ、まちがってました。
-----------------
> 【'[】
> ↑これはフォルダーを指定しているという意味なのでしょうか??
違います。
セルを指定する場合、
=A1
などと書くと思いますが、
別のブック(ファイル)のセルを指定する場合などは、
='[ブック名]シート名'!A1
のように書く必要があります。
これは、実際にExcelで2つのファイルを開いて、
Book1の任意のセルで「=」を入力し、Book2のSheet1のA1セルを選択すると、
=[Book2]Sheet1!A1
となるのが確認できると思います。
「Book2」 の 「Sheet1」 の A1
という意味です。
この時、ファイル名やシート名にスペース等が入っていると、正常に動作しないので
「’」で囲む必要が出てきます。
='[Book2]Sh eet1'!A1
という具合に。で
【'[】は、その最初に入れる文字です
'[ブック名]ファイル名'!セル
と書かなきゃならないので、
最初にブック名とファイル名を囲う → '
次にブック名を囲う → [
次にブック名 → ThisWorkbook.Name
次にブック名を閉じる → ]
次にシート名 → 貼り付け
次にブック名とファイル名を閉じる → '
次にセルとの区切り → !
最後にセル範囲 → R5C2:R508C
質問のケースでは
シート名とセル範囲が確定していて、ブック名だけが関数で取得する形なので、
確定している書き出し → "'["
関数で取得となるブック名 → ThisWorkbook.Name
確定しているブック名以降 → "]貼り付け'!R5C2:R508C4"
これらを「&」でつなぐと・・・
"'[" & ThisWorkbook.Name & "]貼り付け'!R5C2:R508C4"
になる、ということです。
説明ベタなので長々としてしまいすみません。
うまく伝わるといいのですが・・・・
詳しい解説ありがとうございます。
Excel表記方法の根本から説明して頂き、やっと理解することができました。根本から勉強し直します。
皆様細かく説明して頂きまして、大変恐縮ですが、エクセルの構造から説明して頂いたzongai様にベストアンサーを贈りたいとおもいます。
当方、初歩的過ぎてご迷惑をお掛けしました。

No.3
- 回答日時:
文字列の連結です。
[" & ThisWorkbook.Name & "]で説明すると、
""で囲っているのが、そこに書いた文字列を意味します。
ThisWorkbook.Nameは変数名だから、その変数に格納されている文字が対象になります。
上の例は不完全で、正しく書くと
"[" & ThisWorkbook.Name & "]"。 上の例ではエラーです。
ThisWorkbook.Nameの中身がabcと言う値だったら
[abc]と言う文字列になります。
Aと言う変数にアリガトウという文字が格納されていたら
B="今日は" & A & "御座いました"
を実行すると、Bには、今日はアリガトウ御座いました と言う文字列が格納されます。
No.2
- 回答日時:
>Sorces:="'[統合ファイル.xlsm]貼り付け'!R5C2:R508C4"
ここの事でしたよね?
質問が閉じられてしまったのでどうしようかと思いましたが。
簡単に言えば
Sorces:="'[ThisWorkbook.Name]貼り付け'!R5C2:R508C4"
[] の中はBookを表しますが、[ThisWorkbook.Name] なんてBookは存在しません。
そもそも .Nameと言う『拡張子』のファイル指定なんてのがおかしいからです。
1つの文字列として見た時に。
なので実際のBook名を表す ThisWorkbook.Name を前後の文字と
Sorces:="'[" & ThisWorkbook.Name & "]貼り付け'!R5C2:R508C4"
このようにする事で繋がった文字列に表せます。
と言う感じでは如何でしょう?
何度もご丁寧に説明して頂いただきまして、本当にありがとうございます。
MsgBox ThisWorkbook.Name
でファイル名が返ってきたので、適応出来ると思っていました。
前後の文字とのことですが、後はシートと繋いでいることが分かるのですが、前は何と繋いでいるのでしょうか?前に「&」を入れることで、フォルダと繋がっていることになるのでしょうか?
No.1
- 回答日時:
[" & ThisWorkbook.Name & "]
ここの部分でピックアップしちゃダメ。
抜き出すならこの範囲。
わかりやすいようにスペースを割り込ませると
"'[" & ThisWorkbook.Name & "]貼り付け'!R5C2:R508C4"
というわけで「&」の役割は文字列を結合させる役割を持ちます。
たとえばマクロが書かれているbookの名前が「Book1」だとすると
【'[】 と 【Book1】 と 【]貼り付け'!R5C2:R508C4】
をつなげるってことになります。
なので、
"'[" & ThisWorkbook.Name & "]貼り付け'!R5C2:R508C4"
この部分は、↓のような文字列になります。
'[Sheet1]貼り付け'!R5C2:R508C4
ご丁寧な解説ありがとうございます。更問いさせてください。
文字列の結合ということですが、
【'[】
↑これはフォルダーを指定しているという意味なのでしょうか??
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】AブックからBブック...
-
VBAで別のブックにシートをコピ...
-
VBA シートをコピーする際に Co...
-
【ExcelVBA】インデックスが有...
-
Excel UserForm の表示位置
-
エクセルでシートを保護すると...
-
罫線の斜線を自動で引くマクロ
-
あああ..ああい..ああう とい...
-
「段」と「行」の違いがよくわ...
-
Excel VBAでのWorksheet_Change...
-
EXCELのダイアログシートって、...
-
DataGridViewでグリッド内に線...
-
Excelのフィルター後の一番上の...
-
vba マージエリアの行数を非表...
-
【エクセル】フリーワード検索...
-
マクロの相対セル参照記録って?
-
エクセルファイルを開いた回数...
-
ListViewで列を指定して表示さ...
-
アクティブになっている行をマ...
-
【マクロ】実行時エラー '424':...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
VBA 別ブックからコピペしたい...
-
別ブックをダイアログボックス...
-
VBAで別のブックにシートをコピ...
-
ワイルドカード「*」を使うとう...
-
VBA コードを実行すると画面が...
-
VBA 実行時エラー 2147024893
-
[Excel]ADODBでNull変換されて...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】インデックスが有...
-
【ExcelVBA】zip圧縮されたCSV...
-
Excelマクロ 該当する値の行番...
-
【Excel VBA】書き込み先ブック...
-
【VBA】全シートの計算式を全て...
-
Excelファイルを開くとき、読み...
-
Excel2007VBAファイルの表示に...
-
VBAで複数のブックを開かずに処...
-
フォルダ内の全てのファイルに...
-
オブジェクトは、このプロパテ...
おすすめ情報