
以下のマクロのコードや内容・条件をご覧ください。動きます。
次に図をご覧ください
book1の【A1からI1】までを、book2の【B6からJ6】に転記をしたいです
しかし、book2の【B13からJ13】に転記されてしまいます
理由は、マクロが最終行をA列の13行目と判断している為です
番号のデータがある為です
これを、赤矢印の場所へ転記できるようにしたいです
ご存じの方、よろしくお願いします
【利用条件】
・転記先ファイルは共有
・複数人にて利用
【マクロ内容】
・データを転記する
・book1のA1からI1までを、book2の【最終行】に転記
・最終行は、データが歯抜けであっても、1番最後の行に
あるデータを最終行と判断する
【コード】
Sub 転記()
Dim ws1 As Worksheet
Dim wb2 As Workbook
Dim ws2 As Worksheet
Dim maxrow2 As Long
Dim row2 As Long
Dim i As Integer
Set ws1 = Worksheets("転記元")
For i = 1 To Workbooks.Count
If Workbooks(i).Name = "book2.xlsx" Then '転記先のブック。
Set wb2 = Workbooks(i)
End If
Next
Set ws2 = wb2.Worksheets("転記先") '転記先シート
maxrow2 = ws2.AutoFilter.Range(ws2.AutoFilter.Range.Count).Row '転記先のブックB列
row2 = maxrow2 + 1
ws2.Cells(row2, 2).Resize(1, 8).Value = ws1.Range("A1").Resize(1, 8).Value '転記元から転記先へ7セル分を転記.a1から7セル分。天気先。1列目から。
ws1.Range("I1").Copy ws2.Cells(row2, 10).Resize(1, 1)
wb2.Save '転記先のブックを上書き
End Sub

A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
No1です。
似た様な回答をした記憶があったので・・
これでしょうかね?
https://oshiete.goo.ne.jp/qa/13639237.html
もしそうなら、どうやら文章では意味が通じないようなので、以下にサンプルを。
※ 関数等で計算結果がブランクになっているセルは、空白セルとは見做しません。
(こちらも空白セルと見做したい場合は、チェック条件を変えれば良いです)
Sub Sample()
Dim rw As Long
Const col = "B" ' 最終行判定対象列
With Workbooks("book2.xlsx").Worksheets("転記先")
rw = .Cells(2, 1).CurrentRegion.Rows.Count + 1
While rw > 1 And IsEmpty(.Cells(rw, col))
rw = rw - 1
Wend
MsgBox col & "列の最終行は " & rw & "行です"
End With
End Sub
No.1
- 回答日時:
こんばんは
>理由は、マクロが最終行をA列の13行目と判断している為です
理由がわかっているのなら、そこを修正すれば良いです。
ご提示のコードでは「オートフィルタの範囲」の最終列を求めて、それを最終行と判断しています。
実行時の状況がわかりませんけれど、
1)必ず、オートフィルタが設定されている。(いない場合は無いのか?)
2)フィルターがかかっている状態(=非表示の行が存在する)である可能性がある。
などの状況によって変わってくるかもしれません。
・フィルタが設定されていても、非表示のセルがない状態であれば、通常のEnd(xlUp)で最終行を求める方法で、A列以外(=必ず値のある列)で参照することが可能でしょう。
・フィルタの状態を「全て表示」の状態にしてもかまわなければ、同様に上記の方法が使えます。
一旦、AutoFilter.ShowAllData を実行すれば全ての行が表示されますので・・
https://learn.microsoft.com/ja-jp/office/vba/api …
・フィルタが設定されているのか/いないのか不明で、かつ、非表示の行があるかもしれないというような場合は、下から順にセルの値を調べてゆけば良いでしょう。
(意味合いとしては、End(xlUp)と同様ですが、個々にセルを調べることで非表示のセルも対象にできます)
こちらの場合は、スタートをRow.Countにすると無駄が多いので、UsedRange+1 行目から上に調べてゆくのが効率的と思います。
(表の内容によっては、CurrentRegion の方がさらに有効かもしれません)
※ ちなみに、ご提示のコードの場合、シートにフィルタが設定されていないとエラーになると思われます。
いつもご返答ありがとうございます
フィルターは、しぼりが、入っている場合とない場合があります。非表示の行はないです、usedrange+1ですね
出きるか、わかりませんが、やってみます
アドバイスありがとうございます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelのフィルター後の一番上の...
-
エクセル マクロ オートフィ...
-
excel 小さすぎて見えないセル...
-
特定の文字がある行以外を削除...
-
結合されたセルをプルダウンの...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセル 上下で列幅を変えるには
-
[EXCEL]ボタン押す→時刻が表に...
-
Excel グラフのプロットからデ...
-
エクセルで特定の文字列が入っ...
-
連続データが入った行の一番右...
-
excel 同じ番号のデーターを横...
-
EXCELで最後の行を固定
-
EXCEL VBA マクロ 別シートの...
-
エクセルの列幅以上の文字列を...
-
直近の5個の平均を求めたい
-
表の中でもっとも多く使用され...
-
VBAで色の付いているセルの行削除
-
A1に入力された文字列と同じ文...
-
Excel 時刻の並び替え
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel関数】UNIQUE関数で"0"...
-
特定の文字がある行以外を削除...
-
Excel グラフのプロットからデ...
-
エクセル 上下で列幅を変えるには
-
エクセルで特定の文字列が入っ...
-
Excelのフィルター後の一番上の...
-
結合されたセルをプルダウンの...
-
エクセル マクロで数値が変っ...
-
エクセルのセルに指定画像(.jpg...
-
[EXCEL]ボタン押す→時刻が表に...
-
excel 小さすぎて見えないセル...
-
A1に入力された文字列と同じ文...
-
エクセル マクロ オートフィ...
-
excelのデータで色つき行の抽出...
-
エクセルVBA 最終行を選んで並...
-
Excel ウインドウ枠の固定をす...
-
EXCELで最後の行を固定
-
EXCEL VBA マクロ 別シートの...
-
Excelで非表示のセルをとばして...
-
VBAで色の付いているセルの行削除
おすすめ情報