
こんにちは、お忙しいところ、よろしくお願いいたします。
売買シートの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
No.3ベストアンサー
- 回答日時:
2つのセル(合計1、合計2)について、位置が変動するということですね?
売買シートについて、こちらの「セルの「名前」をつける」の手順で、名前をつければよいです。
https://getnavi.jp/business/79018/
No.5
- 回答日時:
ListObject ってことは、テーブルですよね?
その上で、11行目は合計行なんですよね?
テーブルの合計行であれば、TotalsRowRange プロパティで取得できるので、これを参照するようにすれば良いと思います。
No.4
- 回答日時:
No2です。
>商品グループの最後の行に合計を出しています。
であるなら、「最後の行のN列、O列」という決め方をすることで対応できるのではないでしょうか?
(これが、No2に書いた手操作時の決め方に該当します)
あるいは、そこに「合計」という見出しがあるのなら、それを探して対象行を決めても宜しいでしょう。
(他に、「合計」という見出しが無いことが条件ですが・・)
とは言え、どうやら対象は固定のセルのようですので、No1様がご回答なさっている「名前の定義」を利用するのが一番簡単かもしれませんね。
No.2
- 回答日時:
こんにちは
>売買シートのN11とO11を日毎推移シートに転写するマクロを作っています~
ご質問の内容から想像すると、「N11とO11」ではないということですよね?
もし手作業で行う場合は、どうやってその「N11とO11」を決めているのでしょうか?
(無条件で、N11、O11セルならば、ご提示のコードで良いはず)
その決める手順で、マクロからも対象セルを決定するようにしておけば宜しいでしょう。
(例えば、どこかに見出しがあってその行のN列とO列の値とか・・)
気になるのは、どう使うのかは不明ですが「行を削除」のようなコードが見られるので、対象となる行そのものが削除されてしまうことはないのでしょうね?
No.1
- 回答日時:
セルに名前を付けると良いと思います。
名前の付け方
https://getnavi.jp/business/79018/
利用の仕方
https://www.moug.net/tech/exvba/0050107.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付が未入力の際はゼロか、空...
-
Excelの「0」だけ非表示、小数...
-
VBA セル間のリンク修正につい...
-
エクセルでデータを蓄積させる...
-
エクセルで条件に一致したセル...
-
シートが異なるセル同士を、相...
-
エクセルで、勤務表から 日付...
-
エクセルについて
-
VBAを使い、同一フォルダにある...
-
エクセルのシート間で連続した...
-
エクセルで複写のように自動入...
-
エクセルで日誌作成&自動日付挿入
-
複数シートの同じセル内容を1シ...
-
(Excel)あるセルに文字を入力...
-
[EXCELマクロ] シートタブに自...
-
INDIRECT(空白や()がある文字列...
-
エクセルで別シートからの最大...
-
Excel VBAについて
-
エクセルで特定の文字を打つと...
-
エクセル2010テキストボックス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
VBA セル間のリンク修正につい...
-
エクセルで1月0日と表示される!!
-
日付が未入力の際はゼロか、空...
-
Office2021のエクセルで米国株...
-
Excelで複数シートの選択セルを...
-
Excelシートの保護時にデータの...
-
エクセルで条件に一致したセル...
-
エクセルで、加筆修正したセル...
-
Excelでスクロールすると文字が...
-
エクセルで複写のように自動入...
-
ExcelでTODAY関数を更新させな...
-
(Excel)あるセルに文字を入力...
-
複数シートの同じセル内容を1シ...
-
エクセルで指定のセルのみ完全...
-
エクセル ハイパーリンクで画像...
-
エクセルで複数のシートの同じ...
-
エクセルについて
-
EXCELのハイパーリンクのセルを...
-
エクセルで別シートからの最大...
おすすめ情報
ありがとうございます。
N11を合計1と O11を合計2と名前を付けておくと 1行追加すると N12、O12の位置が合計1、合計2となるわけですか。 これはマクロでつけずに、売買シートの設定でつけておくことで良いのですか?。
Range("N11")を 合計1
Range(”O11”)を合計2
こんにちは。売買シートのN11とO11を日毎推移に転写をします。しかし新規で新しい商品を追加すると行が1行増えてN12,O12となります。削除もありますが、N11,O11の合計の入ったところは削除にはなりません。商品グループの最後の行に合計を出しています。