- ベストアンサー
エクセルVBA
どうして SUM(A1:A5) Range("A1:A5") のように 関数の引数には" "がいらなくて Rangeの引数には" "がいるのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- 【エクセル】 VBAでエラーが出てわかりません。。
やりたいことは、関数をマクロでセルに記入してオートフィルで指定した行数まで伸ばしたいのです。 (すでに関数で作成したファイルがあるのですが、行数が多いため、とても重い。。^^;) まずマクロの記録で次のマクロを取得しました。 Sub Macro4() Range("C4").Select ActiveCell.Formula = "=SUM(A2:A10)" Range("C4").Select Selection.AutoFill Destination:=Range("C4:C12"), Type:=xlFillDefault Range("C4:C12").Select Range("D11").Select End Sub そして、 Sheet2に貼り付けて > ActiveCell.Formula = "=SUM(A2:A10)" の"=SUM(A2:A10)"部分をちょっと長い関数ですが、 "=IF(ISERROR(INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1)),"",INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1))" と書き換えてマクロを実行すると「アプリケーション定義またはオブジェクト定義エラーです。」 というエラーが出てしまうんですが、どこを直せばわからないです。。 おかしいところを教えてください、よろしくお願いします。 わかり図らい説明かと思いますが。。この件(1行目の文)について似たようなことを解説して いるサイトがありましたら、教えて欲しいです。
- ベストアンサー
- 筆まめ・はがき作成
- エクセル VBA Replace について
XP microsoft visual basic 6.0 です はじめに A1 に =SUM(A2:A5) と記入してます A2 から A5 には何も記入されていないので A1 の値は 0 です そこで Sub a() Dim e As Range For Each e In ActiveSheet.UsedRange e.Value = Replace(e.Value, "あ", "") Next End Sub を実行すると A1 の =SUM(A2:A5) が 0 と計算結果のみの数字に置き換えられてしまうのですが、何故なのでしょうか 置換後も 関数式を残しておきたいのですが何か良い方法はありませんか よろしくお願いします
- ベストアンサー
- オフィス系ソフト
- Excel VBAの SUM関数について質問です。
Excel VBAの SUM関数について質問です。 SUM関数で合計の値を出す場合、 SUM(A1:A5)という関数で合計を出しますが SUM(sheet2.cells(1,1),sheet2.cells(5,1)) と言ったようにCellsで指定はできないのでしょうか? 複数の列にVBAのプログラムで合計の値を出したいのです。 WorksheetFunction.SumではSUM(A1:A5)のように 自動計算にならないと思うので・・・
- ベストアンサー
- その他(プログラミング・開発)
- エクセルvbaのワークシート関数について
テキストなどでvbaのワークシート関数を使うとき下の二つのコード のようにつかいなさい、と書かれていますが、両方同じように使って いいのでしょうか?実行結果は、ちがいますが。 Range("E3:E6").FormulaLocal = "=SUM(C3:D3)" Range("C6:D6").FormulaLocal = "=SUM(C3:C5)" 商品 上半期 下半期 合計 りんご 30 65 95 みかん 10 68 78 バナナ 30 65 95 合計 70 198 268 Range("E3:E6").FormulaLocal = WorksheetFunction.Sum(Range("C3:D3")) Range("C6:D6").FormulaLocal = WorksheetFunction.Sum(Range("C3:c5")) 商品 上半期 下半期 合計 りんご 30 65 95 みかん 10 68 95 バナナ 30 65 95 合計 70 70 95
- ベストアンサー
- その他(プログラミング・開発)
- Excel VBA 答えが0になってしまうのですがどうしたらなおりますか?
こんばんはB列に上からいくつか数字が入力されているとします。 そのB列の最下行にSUM関数を入力させるマクロを作成しましたが、 なぜか計算結果が0になってしまいます。 循環になってしまっていたので反復計算にチェックをいれ、再計算させましたが思ったような答えが出ませんでした。 この計算結果が0になってしまう現象はどうやっって回避したらよいのでしょうか。合計欄をC列に変えると正常になりますが、B列に計算式を入力させると0になってしまうのは、どうしてなのでしょうか。 下記のコードが悪いのでしょうか?宜しくお願い致します。 (※通常にExcel2003を使用して、単純にセルどうしの引き算をしていても答えが0になってしまう場合があります。これも同じ循環なのかも知れませんので、回避方法を教えてください。) Sub SUM関数を入力する() Dim r As Integer '最下行 Dim m As Integer '対象列 Dim a As Variant Dim siki As Variant Worksheets(3).Activate r = Worksheets(3).Range("B65536").End(xlUp).Row + 1 Range("B" & Format(r)).Select m = 2 'R1C1方式で選択 a = "R" & 2 & "C" & 2 & ":R" & r & "C" & 2 siki = "=sum(" & a & ")" Range(Cells(r, m), Cells(r, m)).FormulaR1C1 = siki End Sub
- ベストアンサー
- その他([技術者向] コンピューター)
- マクロ:エクセルVBAでのワークシート関数の参照について
VBA内でワークシート関数を使用する際の、引数の参照について困っています。 満たしたい条件は、 (1)マクロ実行後のシート上においても、セル選択状態で数式「=B1*sum(A1:A3)」 といったように、「値」ではなく、「数式」が入力されているようにしたい。 ↑ Application.WorksheetFunction.Sum(・・・は使えない? (2)上記例のB1およびA1:A3については、マクロ内のユーザ入力によって位置が変わり、C1にもD1にもなり得るので、 cells(1,1)="=B1*sum(A1:A3)" といった「B1」[A1:A3]的な参照を使いたくない。 イメージとしては、 sub sample() number = inputbox("数字を入力してください") cell_a = inputbox("セル1") cell_b = inputbox("セル2") yourrange = range(cells(cell_a,1),cells(cell_b,1) cells(1,1)="=number*sum(yourrange)"・・・※ end sub みたいなことをしたいのですが、※のようなことを する方法はありますでしょうか? 説明が下手なもので、補足等あれば随時いたします。 使用環境はWindows2000、Office2000です。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excel の SUM 関数の引数について
Office 2003 です、Excelについて質問します。 縦一列の数字のSUMを取ろうとしたところ、「SUM」関数を使うと吹き出しが出て、「SUM(数値1、[数値2],....)」 と表示されました。 この[数値2]以降の引数の意味は何でしょうか。 ヘルプで色々と検索をかけましたが、分かりませんでした。 そもそもSUM関数で引数が2個以上あるのが理解出来ないのですが宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAの掛け算
お世話になります。 VBA初心者です。 セルA1にはB1×C1の答え Range("A1").Value = Range("B1") * Range("C1") これを、B1が空白ならA1も空白に、そうでないならA1にB1×C1の答えを入れたいのですが 分かりません。 Range("A1").Value = "IF(B1="""","""",B1 * C1)"これだと A1に『 =IF(****** 』と関数が入ってしまいます。 どなたか 分かる方教えて下さい。 宜しくお願いします。
- ベストアンサー
- その他(業務ソフトウェア)
- エクセルのVBAで悩んでいます。
いつもありがとうございます。 エクセルのVBAで悩んでいます。 セルの範囲指定をVBAで行いたいのです。 ただし、引数に数値変数を使用する為、Cellsプロパティを使います。 すると、離れている範囲の範囲指定が出来ないのです。 例えば、Rangeプロパティだと、 Range("A5:E5,A9:E32").Select こうなるところを、 A9:E32 を変数に置き換えたくて、 Range("A5:E5", Cells(g, 1), Cells(h, 5)).Select と、するとエラーが出ます。 VBAの前文は次の通りです。 Private Sub CommandButton1_Click() a = Me.TextBox1.Value b = Me.TextBox2.Value Set c = Range("a:a").Find(what:=a, LookIn:=xlValues, lookat:=xlWhole) Set d = Range("a:a").Find(what:=b, LookIn:=xlValues, lookat:=xlWhole) 'MsgBox c + d e = c.Address 'MsgBox e f = d.Address 'MsgBox f g = Range(e).Row MsgBox g h = Range(f).Row MsgBox h Range(Cells(g, 1), Cells(h, 5)).Select End sub よろしくお願い致します。
- 締切済み
- Windows XP
お礼
ありがとうございました。やっと疑問が解けました。