Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10077 / 13646 ツリー ←次へ | 前へ→

【23723】行の挿入について だいすけ 05/4/2(土) 16:13 質問[未読]
【23725】Re:行の挿入について ぴかる 05/4/2(土) 17:04 発言[未読]
【23726】Re:行の挿入について だいすけ 05/4/2(土) 17:13 質問[未読]
【23727】Re:行の挿入について YN61 05/4/2(土) 17:35 回答[未読]
【23781】Re:行の挿入について だいすけ 05/4/4(月) 9:24 質問[未読]
【23803】Re:行の挿入について YN61 05/4/4(月) 22:07 発言[未読]
【23824】Re:行の挿入について だいすけ 05/4/5(火) 10:00 発言[未読]
【23827】Re:行の挿入について ウッシ 05/4/5(火) 12:02 回答[未読]
【23847】Re:行の挿入について YN61 05/4/5(火) 20:35 発言[未読]
【23869】Re:行の挿入について だいすけ 05/4/6(水) 9:16 お礼[未読]

【23723】行の挿入について
質問  だいすけ  - 05/4/2(土) 16:13 -

引用なし
パスワード
   オートSUMのある行をワークシート上で挿入した場合は、
行選択の範囲も変更してくれますが、マクロより行を挿入した場合
選択行の範囲が変更されません。
行の挿入時に何か付加することがあるのでしょうか?

【23725】Re:行の挿入について
発言  ぴかる  - 05/4/2(土) 17:04 -

引用なし
パスワード
   だいすけさん、こんにちは。

>オートSUMのある行をワークシート上で挿入した場合は、
>行選択の範囲も変更してくれますが、マクロより行を挿入した場合
>選択行の範囲が変更されません。
>行の挿入時に何か付加することがあるのでしょうか?
やってる事が違うかもしれませんが、こちらではOKでしたよ。
もう少ししたら、帰宅しますんで情報だけですけどネ。

【23726】Re:行の挿入について
質問  だいすけ  - 05/4/2(土) 17:13 -

引用なし
パスワード
   Rows(tgt).Insert Shift:=xlShiftDown, copyorigin:=xlFormatFromLeftOrAbove
Cells(tgt, 25) = TextBox21.Text

上記のような感じでフォーム上のコマンドボタンによりマクロを実行しています。
やはりうまく行きません。

【23727】Re:行の挿入について
回答  YN61  - 05/4/2(土) 17:35 -

引用なし
パスワード
   ▼だいすけ さん:
こんにちは、こんなのであきませんでしょうか?
一度試してください。

>オートSUMのある行をワークシート上で挿入した場合は、
>行選択の範囲も変更してくれますが、マクロより行を挿入した場合
>選択行の範囲が変更されません。
>行の挿入時に何か付加することがあるのでしょうか?

このような感じで集計できますが
これはB2より下の行に入っている数字の合計です。
行の挿入後も計算は出来ます

Sub 合計()

Dim endR As Integer
Dim myRng As Range

endR = Cells(65536, 2).End(xlUp).Row
Set myRng = Range(Cells(2, 2), Cells(endR, 2))

Cells(endR + 1, 2) = Application.WorksheetFunction.Sum(myRng)
End Sub

【23781】Re:行の挿入について
質問  だいすけ  - 05/4/4(月) 9:24 -

引用なし
パスワード
   ▼YN61 さん:
レンジの範囲を取得する際にR1C1形式でできるのでしょうか?
例えば今回取得したいサマリーは、サマリ行の4行前から1行前の間です。
データの位置は絶えず変化していきます。

【23803】Re:行の挿入について
発言  YN61  - 05/4/4(月) 22:07 -

引用なし
パスワード
   ▼だいすけ さん:
今晩は。2列目の合計で、このようなのはどうでしょう。

>▼YN61 さん:
>レンジの範囲を取得する際にR1C1形式でできるのでしょうか?
>例えば今回取得したいサマリーは、サマリ行の4行前から1行前の間です。
>データの位置は絶えず変化していきます。


Sub Sum2Col()
  Dim endR As Integer
  endR = Cells(65536, 2).End(xlUp).Row
  Cells(endR + 1, 2).FormulaR1C1 = "=SUM(R1C" & ":R" & endR & "C" & ")"
End Sub

【23824】Re:行の挿入について
発言  だいすけ  - 05/4/5(火) 10:00 -

引用なし
パスワード
   ▼YN61 さん:
色々とアドバイスをいただきありがとうございます。
YN61さんの方法も試しましたが、やはり、うまく行きません。
マクロからの挿入を行うとセルに注意を促すボックスが出てきます。
(隣接したセルを参照していない・・と)
ワークシート上で挿入する際にはこのメッセージを無視して行っている
と言うことなのでしょうか?
後で、再計算するしか無い様に思えてきました。

【23827】Re:行の挿入について
回答  ウッシ  - 05/4/5(火) 12:02 -

引用なし
パスワード
   こんにちは

うまく行かなかったというコードは提示した方がいいと思いますよ。
最初に戻ってしまうのですが、

Rows(tgt).Insert Shift:=xlShiftDown
Cells(tgt, 25) = Val(TextBox21.Text)

とするだけではダメですか?

【23847】Re:行の挿入について
発言  YN61  - 05/4/5(火) 20:35 -

引用なし
パスワード
   ▼だいすけ さん:
これで行けると思いますが。
要は、合計の行に1〜複数行の挿入されて集計できるマクロと考えていますが…
間違っていますでしょうか?

例えば
− 項目
AAA 11
BBB 22
CCC 33
合計 66

↓↓↓↓のような場合も同じ集計ができる…っと考えて作りましたが。
− 項目
AAA 11
BBB 22
CCC 33
…一行から複数行の空きができる…
合計 66
このような場合でも合計が66と成るようにすることですね。

>▼YN61 さん:
>色々とアドバイスをいただきありがとうございます。
>YN61さんの方法も試しましたが、やはり、うまく行きません。
>マクロからの挿入を行うとセルに注意を促すボックスが出てきます。
>(隣接したセルを参照していない・・と)
>ワークシート上で挿入する際にはこのメッセージを無視して行っている
>と言うことなのでしょうか?
>後で、再計算するしか無い様に思えてきました。

これを一度使ってください…行けると思いますが。
A列で行の長さをチェックさせ、B2からA列の「合計」の右に集計させています。
一度試してみてください。

Sub 合計()  
  Dim endR As Long
  endR = Range("A65536").End(xlUp).Row
  Range("B" & endR).Select
  ActiveCell.Formula = "=SUM(B2:B" & endR - 1 & ")"
End Sub

【23869】Re:行の挿入について
お礼  だいすけ  - 05/4/6(水) 9:16 -

引用なし
パスワード
   ▼YN61 さん:
行の挿入の後に処理を行うと言うことですね。

ただ今回の件で不思議に思うことが、同じワークシート上で
減算の場合は行の挿入時に自動的に式が変わる現象です。
例えば“=A2−D2”は1行挿入後に“=A2−D3”と変わることです。
当初この減算は行の挿入が考慮されているので、サマリに対してはマクロの
記述において何か補えるのではと考えて質問箱に投稿しました。
YN61さんをはじめ皆様には大変お世話になりました。
今後もよろしくお願いします。

10077 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free