マクロ(VBA)の実行結果について

このQ&Aのポイント
  • マクロ(VBA)の実行結果について、エクセルでCONCATENATE関数を利用して名前(氏と名)の連結をさせたいが、実行結果が関数のまま表示される問題についてアドバイスをいただきたい。
  • 質問者はエクセルは中級、VBAは初心者であり、具体的な記述方法について教えてほしいと述べている。
  • 要望としては、マクロ(VBA)の実行結果が文字列として表示されることが望ましいが、少なくともエクセルの式として表示されることを希望している。
回答を見る
  • ベストアンサー

マクロ (VBA)の実行結果につきまして 

エクセルは中級、BVAは初心者の者でございまして ご相談がございます。 CONCATENATE関数を利用して名前(氏と名)の連結をさせたいのですが 実行結果が =CONCATENATE(RC[-2],RC[-1]) と関数のまま表示されます。 こちら、どのように記述をすれば宜しいのでしょうか? できれば ”佐藤 たかし”と文字列になっているといいのですが 少なくとも =CONCATENATE(a1,b1)とエクセルの式になっていれば いいと思っています。 以上、どなたかアドバイスを頂けると嬉しいです。 ※(参考まで)記載したコードは下記です。   ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-2],RC[-1])" Range("C1").Select Selection.AutoFill Destination:=Range("C1:C10"), Type:=xlFillDefault Range("C1:C10").Select

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

マクロの問題じゃなく、セルの書式設定が文字列になっているだけです。 >”佐藤 たかし”と文字列になっているといいのですが sub macro1()  with range("C1:C10")   .numberformatlocal = "G/標準" ’手で設定すればもちろん不要   .formula = "=A1&"" ""&B1"  ’間のスペースは要るの?要らないの?   .value = .value  end with end sub

yaruri
質問者

お礼

こんなに早くご回答頂けてびっくりしてます。 有難うございます。 解決しました★

関連するQ&A

  • エクセルVBAの保存

    毎月異なった新しいエクセルファイルに同じような加工を施すため、VBAを書きました。対象はActivesheetとしています。 で、質問は、この新しいエクセルファイルの標準モジュールにいちいちこのVBAをコピーペーストせずに実行する方法です。 きっと何かあるとは思うのですが・・・・。 VBAは次のような簡単なものです。 Sub 加工1() Dim e As Integer, s As String, n As String e = Range("A4").End(xlDown).Row s = Replace(Mid(Range("A2"), 8, 5), "年", "") & "-" n = Replace(Mid(Range("A2"), 19, 5), "年", "") & "-" Range("A1:C2").MergeCells = False Columns("B:B").Select Selection.Insert Shift:=xlToRight Columns("A:A").Select Selection.Insert Shift:=xlToRight Columns("C:C").Select Selection.NumberFormatLocal = "G/標準" Range("B3").Select Selection.AutoFill Destination:=Range("B3:C3"), Type:=xlFillDefault Range("B3").Select ActiveCell.FormulaR1C1 = "商品番号1" Range("C4").Select ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],10)" Range("C4").Select Selection.AutoFill Destination:=Range("C4:C" & e), Type:=xlFillDefault Range("A3").Select ActiveCell.FormulaR1C1 = "抽出年月日" Range("A4").Select ActiveCell.FormulaR1C1 = s & n & 1 Range("A4").Select Selection.AutoFill Destination:=Range("A4:A" & e), Type:=xlFillDefault Rows("3:3").Select Selection.Insert Shift:=xlDown Range("B1:E1").MergeCells = True Range("B2:E2").MergeCells = True ActiveSheet.Name = "提出用" End Sub

  • エクセルVBAでボタンを作ったシートとVBAを実行するシートを変えたい

    シート1にボタンを作成し、 そのボタンを押すと実行するVBAを作成しました。 そこで、VBAを実行するシートの指定はできるのでしょうか。 例えば、ボタンを押すと、 10行から20行まではシート2で実行させ、 30行から40行まではシート3で実行させたいと考えています。 可能でしょうか。 どうぞ宜しくお願いします。 *********************************************** 作成したVBA。ボタンはシート1にあります。 *********************************************** Private Sub CommandButton1_Click() *********************************************** ここからはシート2で実行させたい *********************************************** Range("E2").Select ActiveCell.FormulaR1C1 = "10" Range("E2").Select Selection.AutoFill Destination:=Range("E2:E101"), Type:=xlFillDefault Range("E2:E101").Select *********************************************** ここからはシート3で実行させたい *********************************************** Range("A2").Select ActiveCell.FormulaR1C1 = "100" Range("A2").Select Selection.AutoFill Destination:=Range("E2:E101"), Type:=xlFillDefault Range("A2:A101").Select End Sub

  • VBAで関数式の値をセルに入力できるようにしたい。

    こんなマクロをマクロの記録で作ったのですが SUMIF関数の数式をセルに入力するのでなく 値だけを入力するしたいのですがどのように すればいいでしょうか? Sub Macro4() Columns("O:O").Select Selection.Insert Shift:=xlToRight Range("N3").Select Selection.AutoFill Destination:=Range("N3:O3"), Type:=xlFillDefault Range("N3:O3").Select Range("O5").Select ActiveCell.FormulaR1C1 = "=SUMIF(出荷貼付け!C1,RC1,出荷貼付け!C5)" ←ここのところを値だけをセルに入力したい。 Selection.AutoFill Destination:=Range("O5:O978") Range("O5:O978").Select Range("O4").Select End Sub

  • マクロについて教えてください

    マクロ初心者です。 A~D列の表が少ない時100行、多い時400行あり、同じ操作を何回か繰り返すため、できればマクロで処理したいと思っています。 マクロ記録で作成したのですが、最終行が一定ではないため行数が増えると上手く作動しません。 どこを修正したらいいでしょうか。ご教示いただければ幸いです。 Sub Macro1() ' ' Macro1 Macro ' ActiveCell.FormulaR1C1 = "=SUBSTITUTE(RC[-1],""集計"","""")" Range("G2").Select Selection.AutoFill Destination:=Range("G2:G4"), Type:=xlFillDefault Range("G2:G4").Select Range("H2").Select ActiveCell.FormulaR1C1 = "=SUMIF(R2C1:R13C1,RC[-1],R2C2:R13C2)" Range("H2").Select Selection.AutoFill Destination:=Range("H2:H4"), Type:=xlFillDefault Range("H2:H4").Select Range("H5").Select ActiveCell.FormulaR1C1 = "=SUM(R[-3]C:R[-1]C)" Range("H6").Select End Sub ちなみに作成したいマクロ 1.F列にA列の「集計」を取り出して、G列にF列の「集計」文字を取り除く。 2.H列にB列「数」を計算する 3.H列の最終行に合計を出す。

  • 突然、関数が正常に表示しなくなった。

    いままで、ずっと正常に表示されましたが、 下記のように、 突然、関数が正常に表示しなくなりました。 マクロではなく、手動にて行っても、同様に正常に表示しません。 よろしくお願い致します。 --------------- Range("J2").Select ActiveCell.FormulaR1C1 = "=RC[182]/100" Selection.AutoFill Destination:=Range("J2", Range("A65536").End(xlUp).Offset(0, 9)), Type:=xlFillDefault --------------- 実行前 1070 1100 1200 1300 実行後 10.7 10.7 10.7 10.7

  • Excel VBA 計算範囲の変更について教えてください。

    こんばんは。とても困っています。 下記のような表で=A1&B1&C1の計算式を入れ、A1とB1を絶対参照にして$A$1&$B$1&C1としてD3までオートフィルをかけます。 そしてD4は =$A$4&$B$4&C4のように絶対参照しているセルを変更したいのです。たくさんありすぎて参照する範囲を変更するのにとても大変な思いをしています。VBAでどのようにすればよいのか教えてください。   |A    B   C     D ------------------------------------- 1| 1T  11L   A    1T11LA (=$A$1&$B$1&C1) 2|          B    1T11LB (=$A$1&$B$1&C2) 3|          C    1T11LC (=$A$1&$B$1&C3) 4| 2T  20L   A    2T20LA (=$A$4&$B$4&C4) 5|          B     2T20LB (=$A$4&$B$4&C5) 6|          C    2T20LC (=$A$4&$B$4&C6) 7| 3T  31M   A    3T31MA (=$A$7&$B$7&C7) 8|          B     3T31MB (=$A$7&$B$7&C8) マクロで記録させたらところ下記のようになりました。 Sub 4行置きに参照範囲を変更する() Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=RC[-3]&RC[-2]&RC[-1]" Range("D1").Select ActiveCell.FormulaR1C1 = "=R1C1&R1C2&RC[-1]" Range("D1").Select Selection.AutoFill Destination:=Range("D1:D3"), Type:=xlFillDefault Range("D1:D3").Select Range("D4").Select ActiveCell.FormulaR1C1 = "=R4C1&R4C2&RC[-1]" Range("D4").Select Selection.AutoFill Destination:=Range("D4:D6"), Type:=xlFillDefault Range("D4:D6").Select Range("D7").Select ActiveCell.FormulaR1C1 = "=R7C1&R7C2&RC[-1]" Range("D7").Select Selection.AutoFill Destination:=Range("D7:D9"), Type:=xlFillDefault Range("D7:D9").Select End Sub ◎初心者なのでVBAにたくさんコメントを入れていただくと助かります。 宜しくお願い致します。

  • ExcelのVBAのAutoFillの使い方について

    Excel97のマクロでAutoFillを使おうとしているのですが、エラーが出て実行できません。 何も表示されていないシートでコマンドボタンを押すと、AutoFillを使ってA1セル~E1セルとA2セル~E2セルに数字の1~5が表示されるようにしたいと考えています。 下記のようにマクロを書いたところ、A1~E5はうまくできたのですが、 「Selection.AutoFill Destination:=ActiveCell.Range("A2:E2"), Type:=xlFillSeries」 の行でエラーが発生します。 「実行時エラー:1004 RangeクラスのAutoFillメソッドが失敗しました。」と表示されます。 Private Sub CommandButton1_Click()   ActiveSheet.Range("A1").Select   ActiveCell.FormulaR1C1 = "1"   Selection.AutoFill Destination:=ActiveCell.Range("A1:E1"), Type:=xlFillSeries   ActiveSheet.Range("A2").Select   ActiveCell.FormulaR1C1 = "1"   Selection.AutoFill Destination:=ActiveCell.Range("A2:E2"), Type:=xlFillSeries End Sub どなたかエラーの原因を教えていただけないでしょうか? よろしくお願いいたします。

  • VBAでオートフィルができません

    エクセル2007です。 画像のようにA列に値を入れて、B列に半角にする関数を入れて、最終行までオートフィルをしたいのですが、 --------------------------------------------------------- Sub test() Dim 最終行 As Long 最終行 = Cells(65536, 1).End(xlUp).Row ActiveCell.FormulaR1C1 = "=ASC(RC[-1])" Selection.AutoFill Destination:=Range("b1:b" & 最終行), Type:=xlFillDefault End Sub --------------------------------------------------------- をすると、 Selection.AutoFill Destination:=Range("b1:b" & 最終行), Type:=xlFillDefault の部分で、 [実行時エラー'1004'アプリケーション定義またはオブジェクト定義エラー] になってしまいます。 原因と対策を教えてください。ご回答よろしくお願いします。

  • excel2010 簡単にするコード

    Sub 問10SUM() ' ' 問10SUM Macro ' Range("B1007").Select ActiveCell.FormulaR1C1 = "=SUM(R[-13]C:R[-1]C)" Range("B1007").Select Selection.AutoFill Destination:=Range("B1007:AW1007"), Type:=xlFillDefault Range("B1007:AW1007").Select Range("AW994").Select ActiveCell.FormulaR1C1 = "=SUM(RC[-47]:RC[-1])" Range("AW994").Select Selection.AutoFill Destination:=Range("AW994:AW1007"), Type:=xlFillDefault Range("AW994:AW1007").Select ActiveWindow.ScrollColumn = 20 ActiveWindow.ScrollColumn = 19 ActiveWindow.ScrollColumn = 18 ActiveWindow.ScrollColumn = 17 ActiveWindow.ScrollColumn = 16 ActiveWindow.ScrollColumn = 14 ActiveWindow.ScrollColumn = 13 ActiveWindow.ScrollColumn = 12 ActiveWindow.ScrollColumn = 11 ActiveWindow.ScrollColumn = 10 ActiveWindow.ScrollColumn = 9 ActiveWindow.ScrollColumn = 8 ActiveWindow.ScrollColumn = 7 ActiveWindow.ScrollColumn = 6 ActiveWindow.ScrollColumn = 5 ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 Range("B1020").Select ActiveCell.FormulaR1C1 = "=SUM(R[-9]C:R[-1]C)" Range("B1020").Select Selection.AutoFill Destination:=Range("B1020:AW1020"), Type:=xlFillDefault Range("B1020:AW1020").Select Range("AW1011").Select ActiveCell.FormulaR1C1 = "=SUM(RC[-47]:RC[-1])" Range("AW1011").Select Selection.AutoFill Destination:=Range("AW1011:AW1020"), Type:=xlFillDefault Range("AW1011:AW1020").Select ActiveWindow.ScrollColumn = 22 ActiveWindow.ScrollColumn = 21 ActiveWindow.ScrollColumn = 18 ActiveWindow.ScrollColumn = 15 ActiveWindow.ScrollColumn = 10 ActiveWindow.ScrollColumn = 9 ActiveWindow.ScrollColumn = 8 ActiveWindow.ScrollColumn = 7 ActiveWindow.ScrollColumn = 6 ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 End Sub これはマクロの記録で作ったものです。AWにオートサムでBからAVを選択して右下の+を下に引っぱりました。。 ドラッグして選択せずにすむコード、もっと短くする方法を教えてください。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー      A     B    中略   AV     AW 993行  ラベル  北海   ~     沖     合計 994行  魚    2    ~     9     1100 中略  1006行  他    6    ~     空欄    2000 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 簡単に載せると表はこうなっています。

  • コードの、この部分の編集がうまく出来ません。

    下記 「 test1 」 の  Range("J2:J20")  を Range("J2", Range("A65536").End(xlUp).Offset(0, 0)) のように 「 データがある最終セルまで 」 にしたいんですが、うまくいきません。 以上 何卒、ご教示お願い致します。 ------------- Sub test1() Range("J2").Select ActiveCell.FormulaR1C1 = "=RC[182]/100" Selection.AutoFill Destination:=Range("J2:J20"), Type:=xlFillDefault Range("J2:J20").Select End Sub

専門家に質問してみよう