アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルのVBAで、Bookを保存する時に全てのシートの最終行をコピーして、数値で貼り付けたいのですが、
1.保存時にマクロを実行、2.最終行を求める(選択する)、3.コピーして数値で張り付ける。
夫々は既に試行錯誤で自作して使用しているのですが、3つを組み合わせると動きません。

そなたかHELPお願いします。

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

  • つらい・・・

    早々のご回答ありがとうございます。

    ご回答を確認して質問内容に不備と間違いがあることに気付きましたので改めて。
    字数制限の為 試行したコードは省略させて頂きます。
    対象Bookには構成の違うシートが複数枚あり、
    1.<入力表>
    例えばA1~A10に毎日データを入力します。
    そうするとB1~B10に計算結果が出ます。
    2.<計算結果表>範囲A11:H1000
    おなじシートのA11~H11に、例えばB列には=IF(A323="",NA(),SUBSTITUTE($P$7,"円","")*1)という関数が下の方まで入っています。

    毎日A1-A10にデータを入しています。
    つまり既入力セルは数値にしておかないと翌日A1~A10に更新データが入ると過去のセルも更新されてしまうことになります。

    よって最終行は、「数値の入っている」最終行のことでした。
    ご理解いただけたでしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/08/15 08:34

A 回答 (3件)

No2です。



>質問に抜け、間違いがありましたので補足しました
なさりたいように変えて頂ければ宜しいでしょう。
元々、「なさりたいこと」が不明だったので、No2は全体構成を示すためのサンプルにすぎませんので・・
「個々にはできている」という状態でのご質問でしたので、方法がわかれば、あとはご自由に内容を入れ替えて「なさりたいこと」になる様にしていただければ宜しいと思います。
    • good
    • 0

こんにちは



3の処理の内容がよくわかりませんけれど・・・
各シートをループして3の処理を行えばよいだけのように思えます。

>3つを組み合わせると動きません。
どのようにしているのかわからないので、コードを提示いただいた方がわかりやすいように思います。

以下は、各シートのA列の最終行を求めるサンプルです。
(この部分を「3の処理」に入れ替えれば動作すると思います)

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet, rw As Long

For Each ws In Worksheets
 rw = ws.Cells(Rows.Count, 1).End(xlUp).Row
 MsgBox ws.Name & "のA列最終行は" & rw
Next ws
End Sub
    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございます。

質問に抜け、間違いがありましたので補足しました。
最終行と言うのは、関数の入った行は無視して、数値の入った最終行のことで、当該行全体をコピーして、その行に数値で張り付けたい、でした。

つまり最終行の関数を数値に変換して保存したい、でsた。
詳細は保続をご参照頂ければありがたいです。

お礼日時:2023/08/15 08:38

1.保存時にマクロを実行、


2.最終行を求める(選択する)、
3.コピーして数値で張り付ける。

上記のマクロを提示していただけませんでしょうか。
「最終行をコピーして、数値で貼り付けたい」ということですが、
貼り付け先はどこなのでしょうか。
この回答への補足あり
    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございます。

質問に抜け、間違いがありましたので補足しました。
最終行と言うのは、関数の入った行は無視して、数値の入った最終行のことで、当該行全体をコピーして、その行に数値で張り付けたい、でした。

つまり最終行の関数を数値に変換して保存したい、でsた。
詳細は保続をご参照頂ければありがたいです。

お礼日時:2023/08/15 08:39

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