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

お世話になっております。

VBA初診者です。
表の最下行のセルに計算表のセル内容を転記するのに

.Sheets("シート名").Cells(Rows.Count, 列番号).End(xlUp)

を多用しているのですが、複数の表が縦に並んだ場合、一番下の表の最下行から次の(上の)表の最下行まで決まった行数上のセルに飛ばしたいシートが出てきました。

上のコードをどのように修正擦れば良いのか教えてください。
NETでは最下行の例しかみあたらないのでHELPします。

A 回答 (4件)

空白では無い最終行はオブジェクト・メソッドが有るので取得出来ますが、各表間の空白を見つけて、上の表の最終行を見つけるオブジェクト・メソッドは残念ながら有りません。



for分を使って、一番上まで探す手続き処理を自前で組むしか有りません。
    • good
    • 0
この回答へのお礼

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

質問の最初にかきましたように
>VBA初心
故j前では組めないので、表を横に配置するのが現実的かと。。。。

横に長く、列は同じ内容なので本当は縦配置が好ましいのですがやむなしですね。

お礼日時:2022/09/15 09:46

決まった行数上のセルに飛ばしたい・・


例えば20行上と決まっているなら

.Sheets("シート名").Cells(Rows.Count, 列番号).End(xlUp).Row -20で
20行上の行番号を求めるか、
.Sheets("シート名").Cells(Rows.Count, 列番号).End(xlUp).offset(-20,0)でセルのアドレスを上にずらすか
    • good
    • 0

複数の表をそれぞれテーブル(ListObject )化してしまえば、簡単に最終行を取得できるはずです。


ListObject については、ご自分でお調べください。
    • good
    • 0
この回答へのお礼

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

少し調べてみましたが、質問の最初にかきましたように
>VBA初心
故、普通の簡単なコードも試行錯誤でどうにかのレベルですので、これからテーブル機能をマスターして、ではすぐに定年になってしまいます。
よって、表を横に配置することにします。

横に長く、列は同じ内容なので本当は縦配置が好ましいのですがやむなしですね。

お礼日時:2022/09/15 09:48

それだと、途中に空白が有るとアウト。



.Sheets("シート名").Cells(Rows.Count, 列番号).End(xlUp)



.Sheets("シート名").Cells(Rows.Count, 列番号).End(xlUp).Row
    • good
    • 1
この回答へのお礼

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

VBA初心者としては、最後のRowの意味が分からないのですが。
Rowというのは任意の数値を入れるとその分だけ最下行から上のセルを指定する、という意味でしょうか?

もし、違っているなら、質問内容に不備があったような感じですのでご免なさい。
やりたいことは、
複数の表が縦に並んだ場合、本当の(一番下の表の)最下行から上の表の最下行に異動させるように出来ればと思っています。

上から表A、表B、表C、表Dとあった場合、
・・・Cells(Rows.Count, 列番号).End(xlUp)
では一番下の表Dの最下行に当たるので、その上の表Cの最下行は表Dの最上行から表Cの最下行に当たるセル・・・
表Bは表Cの最上行から・・・とうように指定したいのです。

どこの表の最下行に飛ばすかは、それぞれの表の横の「転記ボタン」をクリックすることで各表の最下行に転記させたいのです

お礼日時:2022/09/14 17:17

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