• ベストアンサー

ダブルコーテーションでアンドをはさむ

EXCEL VBAマクロでActiveCell.FormulaR1C1 = "=SUM(R[-" & 変数 - 1 & "]C:R[-1]C)"の様にダブルコーテーションでアンドを はさむやりかたがわかりません おしえてください

  • LV314
  • お礼率44% (92/206)

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

>上の様な使い方は書いてありませんでした コード中の文字は、ダブルクォーテーションで括ります。 変数や数値をダブルクォーテーションで括って仕舞うと文字列と見なされるので括る必用はありません。 「"=SUM(R[-" & 変数 - 1 & "]C:R[-1]C)"」は、 文字:"=SUM(R[-" 式 :変数 - 1 文字:"]C:R[-1]C)" と、&で繋いで居るだけです。

LV314
質問者

お礼

わかりました ありがとうございます

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

>やりかたがわかりません 実例を挙げているじゃないですか。 文字列の間(中)に”が無いと仮定して 初めの”から次の”までが文字列、 すなわち(間違いが無ければ)&までが文字列です。 そして次の&までが数値であっても、&でその前の文字列と結合されると、変数の結果は数値でも文字列の扱いになります。 &の後はまた、”から”までが文字列です。 不安なら Msgbox "=SUM(R[-" Msgbox 変数 - 1 Msgbox "]C:R[-1]C)" を入れて実行してみて、考えている通り、表示されるか見ればよい。 あと本来的に文字列の中に”がある場合の書き方を勉強してください。 3つ続ける、2つ続けるなど言語により仕様が違う。 http://officetanaka.net/excel/vba/tips/tips90.htm に、VBA・VBでの良い説明があります。

LV314
質問者

お礼

ありがとうございます 勉強します

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

考え方が逆ですよ &をダブルクォーテーションではさんでいるのではなく 変数をダブルクォーテーションの外に出すために 文字列 & 変数 & 文字列 のように並べているのです ダブルクォーテーションで挟まれているのは文字列の部分です

LV314
質問者

お礼

そうでしたか ありがとうございます

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

質問の意味が解りませんが・・・ 「あ"」のような表示がしたいのでしょうか? MsgBox "あ""" MsgBox "あ" & """"

LV314
質問者

補足

こんにちは " & 変数 - 1 & "の様な使い方です いろんな本にはダブルコーテーションで囲んだ文字列と文字列をつなぐのが & と書いてあり、上の様な使い方は書いてありませんでした

関連するQ&A

  • Excel VBAで表組みしたらデバック発生

    Excel VBAの初心者です。Windows Vistaで Excel2007を使っています。 表をマクロの実行で作成したいと思っています。 何もないエクセルブックより 「開発」→「マクロの記録」→「相対参照」 →「表の作成」→「記録終了」→「相対参照で記録の解除」 →「エクセルマクロ有効ブックで保存」 ところがこのマクロ記録が入ったブックを再度立ち上げ、 表をオールクリアにし、マクロボタンより表作成を実行 させようとすると、次のエラーメッセージがでました。 『実行時エラー'9' インデックスが有効範囲にありません。』 デバックからModule1をみると以下の記述となっていました。 Sub 表組み() ' ' 表組み Macro ' ' ActiveCell.Range("A1:E5").Select Selection.Copy Windows("Book1").Activate ActiveSheet.Paste ActiveCell.Columns("A:A").EntireColumn.Select ActiveCell.Rows("1:1").EntireRow.RowHeight = 11.25 ActiveCell.Rows("1:5").EntireRow.Select Selection.RowHeight = 21.75 ActiveCell.Columns("A:A").EntireColumn.ColumnWidth = 14.88 ActiveCell.Offset(0, 4).Range("A1").Select Application.CutCopyMode = False With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With ActiveCell.Offset(1, -3).Range("A1:D4").Select Selection.NumberFormatLocal = "#,##0_ " ActiveCell.Select ActiveCell.FormulaR1C1 = "78000" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "102000" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "9800" ActiveCell.Offset(-2, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "65000" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "204000" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "500" ActiveCell.Offset(-2, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "86000" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "151000" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "10200" ActiveCell.Offset(-2, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "=SUM(RC[-3]:RC[-1])" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "=SUM(RC[-3]:RC[-1])" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)" ActiveCell.Offset(0, -3).Range("A1").Select ActiveCell.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)" ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)" ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)" ActiveCell.Offset(-4, -2).Range("A1:D1").Select Selection.AutoFilter End Sub 上から9行目(?)のWindows("Book1").Activateに 黄色い矢印が示され、また行全体が黄色く四角に 覆われていました。 おそらくこの記述に問題があると思いますが、 どんな記述に変えたらいいのか分かりません。 Excel VBAにお詳しい方ご教示願います。 なお、マクロで作成したい図を添付いたします。 参考にしていただければ幸いです。

  • ダブルコーテーションやシングルコーテーション

    私の持っている参考書の中に、次のように、 変数をダブルコーテーション、シングルコーテーション、およびピリオドで囲んでいるSQL文があるのですが、 この場合、なぜ、ダブルコーテーション、またはシングルコーテーションのみでは駄目なのでしょうか? [参考書の記載] where カラム名>="'.変数.'" ※変数は日付が入ります。varchar型です。

    • ベストアンサー
    • MySQL
  • エクセル マクロ

    はじめまして。 エクセルでマクロを使って研究を進めているものです。 最近マクロを使い始めたのですが、ワークシート関数のスクリプトについてご質問があります。 具体的な記述を書いたほうが説明しやすいので、下に記述します。 Sub Macro1() Windows("a.xls").Activate ActiveCell.FormulaR1C1 = "=SUM(RC[-8]:RC[-1])"・・・(1) Range("J3").Select End Sub このような命令があるときに、sum関数の中に変数を入れることを考えます。そのときに、R1C1表示では選択したセルを基準にして変数を考えなくてはいけないので考えにくいです。そこで、イメージとしてですがこのような書き方はできないのでしょうか。 (1)の部分 ActiveCell.Formula = "=SUM(Range(Cells(2, 2), Cells(2, 変数)))" つまり、rangeやcellsを使って書きたいということです。 また、実際のエクセルのセルに入力されている関数をそのままコピーして、それに変数を自分で手直しして加えるような方法がありましたら教えてください。 よろしくお願いします。

  • EXCEL VBAの書き方

    EXCEL VBAの初心者です。 EXCEL2003を使っています。 数式の中のパラメータの書き方が分からず困っています。 具体的には、単純な計算をR1C1形式の数式を使い、FOR文でループを回そうとしました。 この際、例えば以下のようなVBAを、試行錯誤の結果やっと動くようにはなりましたが、とくに「"」(ダブルクォーテーション)の使い方が理解できていません。 NGだった理由、OKとなった理由を、すみませんがお分かりの方教えていただけないでしょうか。 (ヘルプを読んでも残念ながら理解できる程のレベルを持っていません。) やりたいこと:例えば単純な引き算を複数のセルに、ループをまわして設定したい。 --------------- Sub 質問() Dim i As Integer ' "A1"との差を求めるVBA→ "B2"から"E2"に数式入力 For i = 2 To 5 Cells(2, i).Select ' (1)問題の行→これはOKの例 ActiveCell.FormulaR1C1 = "=r[-1]c-r[-1]c[" & 1 - i & "]" Next i End Sub --------------- ' (2)問題の行→実行時エラー'1004' ActiveCell.FormulaR1C1 = "=r[-1]c-r[-1]c[1 - i]" --------------- ' (3)問題の行→コンパイルエラー(構文エラー) ActiveCell.FormulaR1C1 = "=r[-1]c-r[-1]c["1 - i"]" --------------- ' (4)問題の行→コンパイルエラー(構文エラー) ActiveCell.FormulaR1C1 = "=r[-1]c-r[-1]c["&1 - i&"]" ---------------

  • EXCEL→CSV保存時のダブルクォーテーションについて

    下記のようにEXCELマクロにてEXCELファイルをCSVファイルに保存しようとしています。 NewBook.SaveAs Filename:="test.csv", FileFormat:=xlCSV, CreateBackup:=False このとき、セル値にダブルクォーテーションが含まれていると、出力CSVファイルの値がダブルクォーテーションで囲まれてしまいます。 ●ダブルクォーテーションが含まれていない場合 セル値→A列:ABC     B列:DEF CSVファイル→ABC,DEF ●ダブルクォーテーションが含まれている場合 セル値→A列:A"C     B列:DEF CSVファイル→"A"C",DEF 後者の場合もダブルクォーテーションで囲まれないようにするにはどうすればよいでしょうか。

  • Excelに、ダブルクォーテーションで始まる文字列を貼り付けると、ダブルクォーテーションが消えること

    Excelで、ダブルクォーテーションで始まる文字列をセルに貼り付けたときに ダブルクォーテーションが消えるのですが、 Excelってもともと(標凖的な動作として)そういうものですか。 (F2キーを押すなりして)編集状態にして貼り付ければ、ダブルクォーテーションのついたまま貼り付くのですが、 私はセルを選択して貼り付けただけでも大丈夫だと思っていました。 「文字列を貼り付ける」というのは、例えばテキストエディタ上にあるものを手作業でコピーして貼り付ける、ということです。 「ダブルクォーテーションで始まる文字列」と言っても、 ダブルクォーテーションが3つ以上あったときに消えるのは、最初の1組(2つ)ですね。 しかし、 "AAAA"""BBBB のような場合には、なぜか AAAA"BBBB になるのです。 (ちなみに、この文字列を、質問直前の質問内容確認の画面(IE)でコピーしてExcelに貼り付けたときは、違います。) どのような規則に基づいてダブルクォーテーションが消えるのかも疑問です。 このような仕様になっている理由はなんでしょうか。 また、Excelに文字列を貼り付けるという操作を頻繁に行うため、 できれば、編集状態にしなくても、 セルを選択して貼り付けするだけで、そのままダブルクォーテーションも貼り付いてほしいのですが、 そのためにはどうすればよいのでしょうか。 「セルの書式設定」で、表示形式を文字列にすればよいと思ったのですが、だめでした。 セルには文字列を入れるだけで、数式を入れたりしません。 (数式としては扱ってほしくない、という意味です。) Excelは2000です。

  • ダブルクォーテーションの吐き出し

    プログラムの素人の質問ですが、知ってる方教えてください。 VB6(SP5)にて、MSCommを使ってRS-232Cポートへデータを 送る処理をしています。そこで、ダブルクォーテーションを 吐き出さなければいけないのですが、「Chr(34)」だとエラーが 起きてしまいます。他にダブルクォーテーションを表示する方法は ありませんか。本当に素人くさい質問ですがよろしくお願いします。

  • ActiveCell.FormulaR1C1の変数

    ActiveCell.FormulaR1C1 に変数を用いたいのですがうまくいきません。 For i=0 To 5 ActiveCell.FormulaR1C1 = "=-R["&n&"]C[-2]-100" next i としたのですがどこが間違っているのでしょうか? R1の1を変数にしたいです。よろしくお願いします。

  • シングルコーテーションをダブルコーテーションに置換

    エクセルで シングルコーテーションを ダブルコーテーションに置換することは出来ないのですか? セルに「'aaa」がはいってるのですが これを「''aaa」にする方法を教えてください。 置換だとなぜかできません。

  • ダブルコーテーション 、"を二つ入力する事について

    vbaなのですが ダブルコーテーションを置換する際に、 moji = Replace(moji, """", "") のように、"を二つ入力しないとエラーになりますが そのような事はヘルプのどこに書いてありますか? ヘルプで検索しても ダブルコーテーションに一致する結果はありません。 となってしまいました。

専門家に質問してみよう