
A 回答 (8件)
- 最新から表示
- 回答順に表示
No.8
- 回答日時:
No1の追伸です。
計算するシートがアクティブであれば、セルはどこがアクティブになっていてもマクロの実行には影響ありません。たとえ AZ10000 がアクティブでも。
計算するシートをアクティブにしたくない場合は、3行目で計算するシートを指定します。
sheet1 の場合は
with worksheets("sheet1")
となります。この場合シート2でマクロを実行してもシート1の合計ができます。
No.7
- 回答日時:
こんばんわ、No1です。
ごめんなさい、3行目の綴りを誤っていました。with activesheets ではなく with activesheet です。失礼しました。
sub TestSum()
dim I as long, R as long
with activesheet
for I = 2 to .cells(10000,1).end(xlup).row
R = R + .cells(I,1)
next I
.cells(I+1,1)=R
end with
end sub
.cells(行,列) であるといいましたが、列についても for to ... next 文を平行して使用すれば、10行でも100行でも同じマクロで合計を求めることができます。
下から3行目の .cells(I+1,1) で1つ飛ばし .cells(I+2,1) で2つ飛ばしになります。
No.6
- 回答日時:
こんばんは。
>数式をコピーしたいので$を外して相対参照にしたいのですが
それは簡単なことです。以下のようにすると相対参照になります。
.Address(0, 0)
Sub Test2R()
'範囲選択
Const N As Long = 2 '何個下?
Const L As Long = 0 '何個左へ
With Selection
.Cells(.Count).Offset(N, L).FormulaLocal = "=SUM(" & .Address(0, 0) & ")"
.Value = .Value '定数化
End With
End Sub
>A5からとか範囲を変えるにはどうしたらいいでしょうか。
こちらの場合は、範囲の起点の部分は、絶対参照になります。
Sub Test1R()
Const M As Long = 5 '最初は何行目?
Const N As Long = 2 '何個下?
Const L As Long = 1 '何個左へ
With ActiveSheet
With .Cells(Rows.Count, ActiveCell.Column).End(xlUp).Offset(N, L)
.FormulaLocal = "=SUM(R" & M & "C[-" & L & "]:R[-" & N & "]C[-" & L & "])"
'.Value = .Value '定数化
End With
End With
End Sub
No.5
- 回答日時:
質問表現が十分でない。
(A)A1:A10とか言うのを(範囲を)どのようにしてプログラムに伝えるのですか。
(1)マウスで範囲指定
(2)InputBoxで範囲を問い合わせて、答えによる。INPUTBOXのTYPE:=8
(3)文字列で答える
などどういう風に考えていますか
(B)計算に入るキッカケはどう考えていますか
イベントという言葉を知っていますか。
(1)ボタンを押すーワンステップ手間がかかる
(2)マウスで範囲指定の都度
(3)(A)の(2)、(3)ならEnteryやOKの直後でしょうが。
こういう意識が無いようで、取り組むテーマとしては、ちょっと早すぎるのでは。
(A)(1)と(B)(2)のケースで表示だけなら、
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
a = Application.WorksheetFunction.Sum(Target)
MsgBox a
End Sub
のように簡単になるが、いつもこのようになると、しつこいことを
認識し、どういうのが良いか考えてから、ではコードはどうする、ということを質問すべきです。
(A)の(2)は
Sub test01()
Dim a As Range
Set a = Application.InputBox("範囲", Type:=8)
s = Application.WorksheetFunction.Sum(a)
MsgBox s
End Sub
モジュールの実行のような面倒なステップを経てよいなら
Sub test01()
Dim a As Range
Set a = Application.InputBox("範囲", Type:=8)
s = Application.WorksheetFunction.Sum(a)
MsgBox s
c = a.Cells(1).Column
r = a.Cells(1).Row + a.Rows.Count
Cells(r, c) = s
End Sub
など。
No.4
- 回答日時:
ANo.2です。
>一つ下でなく二つ下に合計を出すにはどうしたらいいでしょうか。
Sub test2()
Dim r As Range
Set r = Selection
r.Offset(r.Rows.Count + 1).Resize(1).Value = _
"計 " & WorksheetFunction.Sum(r)
End Sub
こちらではどうでしょうか?
この回答への補足
おっとと少し書き方間違えたようです。
計は同じセルでなく左のセルに入れたいです。
例としてB1:B10の合計を計算して
B10の二つ下のB12に合計を出してその隣であるA12に計を
表示するといったものです。
度々すみませんです。
No.3
- 回答日時:
こんばんは。
質問の内容にはブレがあるようです。
>A2:A10に数字があってその一つ下に合計をVBAで出したい
>A2:A50とかA2:A30とか毎回変わります、そしてその下に合計を出します。
'[標準モジュール]が良いです。
アクティブセルの列の範囲の一番下の行の次の下のセルに出す。
数式でない場合は、.Value の コメントブロックを外す。
Sub Test1()
With ActiveSheet
With .Cells(Rows.Count, ActiveCell.Column).End(xlUp).Offset(1)
.FormulaLocal = "=SUM(R2C:R[-1]C)"
'.Value = .Value '定数化
End With
End With
End Sub
ワークシート関数を応用すればよいです。どこでも、同じ式です。
>ある範囲のセルを選択してその選択範囲の一番下か、または選択範囲の一つ下に合計を出したいのです。
Sub Test2()
'範囲選択
With Selection
.Cells(.Count).Offset(1).FormulaLocal = "=SUM(" & .Address & ")"
' .Value = .Value '定数化
End With
End Sub
この回答への補足
ありがとうございます、出来たようです。
ついでにお願いなのですが
選択範囲の次の下といいましたが二つ下には出来ないでしょうか。
10 ←このように空白を挟んで合計を出したいです。
10
またSub Test1()では常にA2から範囲をとるようですが
計20 A5からとか範囲を変えるにはどうしたらいいでしょうか。
次にSub Test2()では選択を余分にとって計算したら空白を
挟んで合計を出せますが
数式が=SUM($A$4:$A$11)のように絶対参照になるようです
数式をコピーしたいので$を外して相対参照にしたいのですが
どうすればいいでしょうか。
No.2
- 回答日時:
>または選択範囲の一つ下に合計を出したいのです。
のサンプル。
Sub test()
Dim r As Range
Set r = Selection
r.Offset(r.Rows.Count).Resize(1).Value = _
WorksheetFunction.Sum(r)
End Sub
ご参考になれば。
この回答への補足
やってみたところ出来ました。
お手数かけるのですが、一つ下でなく二つ下に合計を出すにはどうしたらいいでしょうか。
5
5
計10
上記のように表から空白を挟んで合計を出したいのです。
No.1
- 回答日時:
sub TestSum()
dim I as long, R as long
with activesheets
for I = 2 to .cells(10000,1).end(xlup).row
R = R + .cells(I,1)
next I
.cells(I+1,1)=R
end with
end sub
A列の10000行目から上に向けてデータのある最終行を探しています。
次に2行目から最終行まで変数Rに繰り返し値を代入させています。
cells(行,列)ですのでA列以外であれば列の数字を変更してください。
この回答への補足
回答ありがとうございます。
A2:A10に数字を入れてA11を選択状態にしてマクロを実行したら
「オブジェクトが必要です」というエラーが出ます。
デバッグを開いたら
For I = 2 To .Cells(10000, 1).End(xlUp).Row
上の行で止まっているみたいです。
どうすれば合計が出るでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- Excel(エクセル) エクセルのマクロを教えてください。 4 2022/10/06 08:53
- その他(Microsoft Office) 選択行の列範囲に二重線を引く 3 2022/06/08 12:21
- Excel(エクセル) マクロ セルの選択 5 2022/08/12 22:47
- Excel(エクセル) 【VBA】エクセルで選択した範囲の値のみをクリップボードにコピーするコードについて 3 2023/03/08 17:41
- Excel(エクセル) VBA オリジナル関数で選択セルの合計を作成したい 3 2023/03/19 19:45
- Excel(エクセル) [並べ替えの前に]、[選択範囲を拡張する]のが煩わしいッ! 1 2023/02/28 22:40
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- 数学 変数と範囲について、(空集合について)質問です。 数学苦手です。よくわからないところで引っかかりがち 4 2022/09/27 13:16
- Excel(エクセル) エクセルの数式について ブック内の別シートの値の含まれたセルの個数を集計したい 全シート一覧のシート 1 2022/07/21 19:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル マウスで選択した範...
-
visual studio でインデントを...
-
反転する時の色を変えたいのですが
-
テーブルリンク エクセルの4...
-
エクセル ダブルクリック入力の...
-
Wordデータの色を反転させたい
-
EXCEL ボリュームゾーンごとの...
-
選択範囲の空白セルに0を入れる...
-
エクセルである行以下全部を削...
-
gimpで色交換できません。
-
ipadのpagesでMS明朝を使う方法...
-
Jw-cadの範囲指定で文字が選択...
-
Google Earth Pro(グーグルア...
-
Photoshop で8bit /チャンネル ...
-
「無」と「未」の使い方
-
マウスカーソルをレーザーポイ...
-
PDFを開くとデフォルトで閲覧モ...
-
白飛びした(明るい)写真をiPhon...
-
大至急!
-
GOM PLAYER で逆コマ送りする方...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
visual studio でインデントを...
-
エクセル マウスで選択した範...
-
Wordデータの色を反転させたい
-
エクセル ダブルクリック入力の...
-
テーブルリンク エクセルの4...
-
選択範囲の空白セルに0を入れる...
-
セル削除右(又は下)方向にシフト
-
反転する時の色を変えたいのですが
-
読み上げ機能について
-
EXCEL VBA----離れたセル範囲の...
-
エクセルのマクロで選択範囲の...
-
Cell内の一部を指定する方法(Wo...
-
エクセルのフィルタオプション...
-
エクセルのピボットに新しい範...
-
マクロの記録
-
私のプロフィールの自己紹介を...
-
EXCEL97 関数で検索範囲が複数...
-
印刷時の選択範囲
-
エクセルのマクロを教えてくだ...
-
PhotoShopでテキストだけの切り...
おすすめ情報