プロが教えるわが家の防犯対策術!

こんにちは、お忙しいところ、よろしくお願いいたします。
売買シートのN11とO11を日毎推移シートに転写するマクロを作っていますが、売買シートに行を追加、削除をすると行位置がずれます。これを自動で変わるようにしたいと思いますが、わかりません。良い方法はありませんか。

 売買シート
行を追加
g = .Row - 3
.ListObject.ListRows.Add g

行を削除

Rows(i).Delete 'i行目を削除


 日毎推移シート
Sub Macro1()
'
Dim FC As Object '当日
Dim FC2 As Object '前日

Set FC = Sheets("日毎推移").Range("A:AC").Find(What:=Date, LookAt:=xlWhole)
Set FC2 = Sheets("日毎推移").Range("A:AC").Find(What:=Date - 1, LookAt:=xlWhole)

If Not FC Is Nothing Then
FC.Offset(, 1).Resize(1, 1).Value = Sheets("売買").Range("N11").Value ---ここです。
FC.Offset(, 2).Resize(1, 1).Value = Sheets("売買").Range("O11").Value ---ここです。


Set 当日金額 = FC.Offset(, 1).Resize(1, 1)
Set 前日金額 = FC2.Offset(, 1).Resize(1, 1)

FC.Offset(, 3).Resize(1, 1).Value = 当日金額 - 前日金額

Else
MsgBox "今日の日付が見つかりません"

End If

Sheets("日毎推移").Select

End Sub

質問者からの補足コメント

  • うーん・・・

    ありがとうございます。
    N11を合計1と O11を合計2と名前を付けておくと 1行追加すると N12、O12の位置が合計1、合計2となるわけですか。 これはマクロでつけずに、売買シートの設定でつけておくことで良いのですか?。


    Range("N11")を 合計1
    Range(”O11”)を合計2

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/05/28 16:47
  • うーん・・・

    こんにちは。売買シートのN11とO11を日毎推移に転写をします。しかし新規で新しい商品を追加すると行が1行増えてN12,O12となります。削除もありますが、N11,O11の合計の入ったところは削除にはなりません。商品グループの最後の行に合計を出しています。

    No.2の回答に寄せられた補足コメントです。 補足日時:2022/05/28 17:13
教えて!goo グレード

A 回答 (5件)

2つのセル(合計1、合計2)について、位置が変動するということですね?



売買シートについて、こちらの「セルの「名前」をつける」の手順で、名前をつければよいです。
https://getnavi.jp/business/79018/
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2022/06/01 00:39

ListObject ってことは、テーブルですよね?


その上で、11行目は合計行なんですよね?

テーブルの合計行であれば、TotalsRowRange プロパティで取得できるので、これを参照するようにすれば良いと思います。
    • good
    • 1

No2です。



>商品グループの最後の行に合計を出しています。
であるなら、「最後の行のN列、O列」という決め方をすることで対応できるのではないでしょうか?
(これが、No2に書いた手操作時の決め方に該当します)

あるいは、そこに「合計」という見出しがあるのなら、それを探して対象行を決めても宜しいでしょう。
(他に、「合計」という見出しが無いことが条件ですが・・)

とは言え、どうやら対象は固定のセルのようですので、No1様がご回答なさっている「名前の定義」を利用するのが一番簡単かもしれませんね。
    • good
    • 0

こんにちは



>売買シートのN11とO11を日毎推移シートに転写するマクロを作っています~
ご質問の内容から想像すると、「N11とO11」ではないということですよね?

もし手作業で行う場合は、どうやってその「N11とO11」を決めているのでしょうか?
(無条件で、N11、O11セルならば、ご提示のコードで良いはず)
その決める手順で、マクロからも対象セルを決定するようにしておけば宜しいでしょう。
(例えば、どこかに見出しがあってその行のN列とO列の値とか・・)

気になるのは、どう使うのかは不明ですが「行を削除」のようなコードが見られるので、対象となる行そのものが削除されてしまうことはないのでしょうね?
この回答への補足あり
    • good
    • 0

セルに名前を付けると良いと思います。



名前の付け方
https://getnavi.jp/business/79018/

利用の仕方
https://www.moug.net/tech/exvba/0050107.html
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング