![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
【質問の質問】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様にベストアンサーを贈りたいとおもいます。
当方、初歩的過ぎてご迷惑をお掛けしました。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_16.png?5a7ff87)
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Windows 10 数年前からWindows10 の Update ができないです。なぜですか? 7 2022/11/09 06:03
- その他(プログラミング・Web制作) seleniumbasic chrome操作について 1 2023/03/29 15:40
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/10 14:24
- Excel(エクセル) ランダムで四択の問題を作る場合にvbaで何を学べばいいでしょうか。 1 2022/04/14 16:45
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- Visual Basic(VBA) 重複したデータ(空白は除く)のVBA表記について 5 2022/08/15 12:41
- Visual Basic(VBA) VBAのエラーについて 2 2023/08/02 17:46
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAが途中で止まります
-
VBA シートをコピーする際に Co...
-
別ブックをダイアログボックス...
-
vbaで他のブックに転記したい。...
-
ワイルドカード「*」を使うとう...
-
ACCESSVBA からExcelの他ブック...
-
【ExcelVBA】インデックスが有...
-
vbaでvbaProjectのパスワード解...
-
VBAで別のブックにシートをコピ...
-
Excelのマクロについて教えてく...
-
【マクロ】違うフォルダにある...
-
VBA コードを実行すると画面が...
-
VBS Bookを閉じるコード
-
[Excel]ADODBでNull変換されて...
-
pythonでクラスで複数のメソッ...
-
エクセルマクロで、他ブックか...
-
VBA 実行時エラー 2147024893
-
ExcelVBA:すでに開かれている...
-
【VBA】全シートの計算式を全て...
-
VBの処理結果をEXCELシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
別ブックをダイアログボックス...
-
(マクロ)データをAブックからB...
-
VBS Bookを閉じるコード
-
VBA 別ブックからコピペしたい...
-
VBA 複数のエクセルから一つの...
-
VBA シート名が一致した場合の...
-
【ExcelVBA】インデックスが有...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
vbaでvbaProjectのパスワード解...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBA コードを実行すると画面が...
-
【VBA】全シートの計算式を全て...
-
複数のエクセルブックをひとつ...
-
VBA 実行時エラー 2147024893
-
ExcelのVBAです。フォルダ内の...
おすすめ情報