[[20210925232404]] 『値が入力されている最終行まで』(ドラチン) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『値が入力されている最終行まで』(ドラチン)

下記のマクロでSheet2のAB5:AB29とAC5:AC29からSheet1のA5:A29とH5:H29へ値のみ転記するのですがデーターが29行目まで入力されて無い場合は入力されている最終行までを選択し値をSheet1へ転記したいと思います。
ご教授お願いします。

Sub 転記()

    Sheets("Sheet1").Range("A5:A29,H5:H29").ClearContents

    Sheets("Sheet1").Range("A5:A29").Value = Sheets("Sheet2").Range("AB5:AB29").Value

    Sheets("Sheet1").Range("H5:H29").Value = Sheets("Sheet2").Range("AC5:AC29").Value

End Sub

< 使用 Excel:Excel2013、使用 OS:Windows10 >


 こんな感じです
  With Sheets("Sheet2")
     With .Range("AB5", .Cells(.Rows.Count, "AB").End(xlUp))
          Sheets("Sheet1").Range("A5").Resize(.Rows.Count).Value = .Value
     End With
  End With
(´・ω・`) 2021/09/26(日) 00:34

(・ω・`)様
横から質問ですみません。教えて下さい。
よく下記のようにwithを二重にする方法見かけますが、

With Sheets("Sheet2")

     With .Range("AB5", .Cells(.Rows.Count, "AB").End(xlUp))

With Sheets("Sheet2"). Range("AB5", .Cells(.Rows.Count, "AB").End(xlUp))
とまとめて書いてしまってはいけないのでしょうか?
マクロ勉強中で気になりました。

ドラチン様
横入り、失礼しました。
(疑問) 2021/09/26(日) 05:41


  With Sheets("Sheet2")
     With .Range("AB5", .Cells(.Rows.Count, "AB").End(xlUp))
          ↑a           ↑b    ↑c 
          Sheets("Sheet1").Range("A5").Resize(.Rows.Count).Value = .Value
                                              ↑d

  ↑aは、Sheets("Sheet2").Range
  ↑bは、Sheets("Sheet2").Cells
  ↑cは、Sheets("Sheet2").Rows.Count
  ↑dは、.Range("AB5", .Cells(.Rows.Count, "AB").End(xlUp)).Rows.Count

  です。 
  .は直近のWith句です。
  ↑cの .Rows.Count は Sheet2の行数。
  ↑dの .Rows.Count AB列の5行目から最終行までの行数です。

 ここで
 >With Sheets("Sheet2"). Range("AB5", .Cells(.Rows.Count, "AB").End(xlUp))
 >とまとめて書いてしまってはいけないのでしょうか?
 と書いたら、エラーになりませんか?
 .Cells と .Rows.Count はWithの中に入っていないので、
 親オブジェクトが何か指定されてないのでエラーです。
(´・ω・`) 2021/09/26(日) 06:02

(´・ω・`) 様

ご丁寧な説明、誠にありがとうございます。
〉 .は直近のWith句です。
理解できました。
マクロは、色々と頭の中で組み立てて書くことが大切なのですね…。
慣れるまでは大変ですが、頑張りたいと思います。
(疑問) 2021/09/26(日) 06:24


(´・ω・`) 様
ありがとうございました。
分かったことが…Sheet2のAB5:AB29には実際、数式が入ってるのでSheet1のA5:A29へ値のみ貼り付けとしても数式を値にして貼り付けてるんですね。だからSheet1へ貼り付け時に空欄と表示していてもAB29まで数式を値にしてるので(´・ω・`) 様に考えていただいたマクロでもSheet1へ転記しVLOOKUP関数で別シートから抽出する様にしているのですがSheet1のA5:A29の空欄行から抽出された他の列は「1/0」となるんですか?「1/0」を消す事は出来ますか?宜しくお願いします。

(ドラチン) 2021/09/26(日) 11:31


 「1/0」ってなんですか?
 おちついて、状況がわかるような説明をおねがいします
(´・ω・`) 2021/09/26(日) 13:11

(´・ω・`) 様
ネットで調べてエラーとなる「1/0」ですが表示形式で、「 m/d;; 」に変更後
空欄となり解決しました。ありがとうございました。
(ドラチン) 2021/09/26(日) 22:54

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.