
2行分のデータを他ブックへ転記するマクロを作りたいのですが、下記問題が発生してしまいます。
「2行の内、2行目を空欄のままマクロを実行した場合」
・一回目は正常に転記される
・二回目以降は、'納入先'を転記している列にだけ、転記したデータの上に空白のセルが入ってしまう。他の列は空白はなく詰めて転記される
下記がマクロコードです。
なぜ上記のようなことが起きてしまうのでしょうか?
転記元、もしくは転記先の書式の設定などが原因にもなるのでしょうか?
質問が分かりづらく申し訳ございません。
宜しくお願い致します。
Option Explicit
Sub受注表貼付け ()
'日付一行目'
Dim nyuuryoku As Range, masterrange As Range
Set nyuuryoku = ThisWorkbook.Worksheets("入力シート(A)").Cells(5, 18)
Dim wb As Workbook
Set wb = Workbooks.Open("転記先のパス")
Set masterrange = wb.Worksheets("受注表").Cells(Rows.Count, 1).End(xlUp).Offset(1#)
masterrange.Value = nyuuryoku.Value
'日付二行目'
Set nyuuryoku = ThisWorkbook.Worksheets("入力シート(A)").Cells(7, 18)
Set masterrange = wb.Worksheets("受注表").Cells(Rows.Count, 1).End(xlUp).Offset(1#)
masterrange.Value = nyuuryoku.Value
'納入先一行目'
Set nyuuryoku = ThisWorkbook.Worksheets("入力シート(A)").Cells(5, 20)
Set masterrange = wb.Worksheets("受注表").Cells(Rows.Count, 3).End(xlUp).Offset(1#)
masterrange = nyuuryoku
'納入先二行目'
Set nyuuryoku = ThisWorkbook.Worksheets("入力シート(A)").Cells(7, 20)
Set masterrange = wb.Worksheets("受注表").Cells(Rows.Count, 3).End(xlUp).Offset(1#)
masterrange = nyuuryoku
'希望納期一行目'
Set nyuuryoku = ThisWorkbook.Worksheets("入力シート(A)").Cells(7, 11)
Set masterrange = wb.Worksheets("受注表").Cells(Rows.Count, 5).End(xlUp).Offset(1#)
masterrange.Value = nyuuryoku.Value
'希望納期二行目'
Set nyuuryoku = ThisWorkbook.Worksheets("入力シート(A)").Cells(9, 11)
Set masterrange = wb.Worksheets("受注表").Cells(Rows.Count, 5).End(xlUp).Offset(1#)
masterrange.Value = nyuuryoku.Value
End Sub
No.1ベストアンサー
- 回答日時:
こんにちは
ご質問の意味がいまひとつわかりかねますが・・・
>転記したデータの上に空白のセルが入ってしまう。
空白に見えているだけで、実際にはそのセルにスペースとか改行とかが入っているのではないでしょうか?
そもそもになりますが、ご提示の処理方法だと、元のデータの同じ行のデータが同じ行に転記される保証はありません。
元データの一つの行が、必ず「全部データが入っている」か「全部空欄」の状態のどちらかであることが、保証されているならば別ですけれど。
想像するところ、部分的な空欄が生じている結果かと。
(見た目はセルが空白でも、部分的に何か入っている)
実際になさりたいことや、元データの値のとり得る可能性等がわからないので、なんとも言えませんけれど、なんとなくの雰囲気では、一般的に「元の同じ行のデータ」は「転記先の同じ行」に転記なさりたいのではないかと想像しますけれど・・・
こんにちは
ご回答頂きありがとうございます。
質問の内容が分かりづらく申し訳ございません。
ご指摘頂いた空白欄へのスペースや改行はありませんでした。
部分的に何か入っているかどうかについては、転記元のデータに「関数」が入っております。(IFERROR関数です)
ただ、転記元のデータで選択しているセルには全て同じ関数が入っており、条件は同じだと思っているのですが、場合によっては「一見空白だが何か入っていると認識されるセル」として転記されてしまうのでしょうか?
ちなみに、上に空白が入ってしまうデータの共通点としては、数値ではなく、「文字」が入力されるセルだということです。
さらにややこしくして申し訳ございませんが、何分マクロ初心者なもので、ご教授頂けると助かります。
宜しくお願い致します。
No.2
- 回答日時:
転記先の行を取得するために次のようなコードを書いているようですが・・・、
Set masterrange = wb.Worksheets("受注表").Cells(Rows.Count, 1).End(xlUp).Offset(1#)
これって、「日付」の場合はA列の最終行の次の行を求めていますよね?
「納入先」の場合は、C列の最終行の次の行を求めています。
要するに、項目毎に基準とする列が異なっているので、たまたま、その列の最終行が空白であった場合は上に詰まっちゃうんです。
必ず値が入る列を基準に最終行を求めるようにすると上手くいくと思いますよ。
それにしても、このコードって・・・。見直した方が良いですよ!!
こんにちは。
ご回答ありがとうございます。
常に最終行を取得して上に詰めて入力していきたいのですが、転記元のセルが空白(IFERROR関数は入っています)なのに、上に詰まらず一個空白セルが入ってしまうというのが今回解決したいと思っている問題です。
上手くお伝えできていなければ申し訳ございません。
コードに関してですが、何分全くのマクロ初心者なもので、ネットで拾ったコードを変換したりして作ったものですので、だいぶ粗い作りになってしまったのだと思います(笑)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 転記マクロ 変数が定義されていませんの解決法 2 2023/04/16 16:46
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) Sheet1をフィルターで「りんご」を抽出し、Sheet2へ地域を貼り付ける下記マクロを変更して S 2 2022/12/11 03:01
- Excel(エクセル) 【マクロ】【VBA】同じフォルダ内にあるエクセルのデータを転記したい【ブック1からブック2へ】 9 2023/08/10 07:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロで最終行を取得してコピ...
-
Excel97 指定した行だけマク...
-
Excel 別ブックから該当データ...
-
Access2003レポート:最終ペー...
-
数値に見えるものはすべて数値...
-
Excelマクロの転記について
-
エクセルで空白行を削除する ...
-
エクセルのVBAで指定した行数の...
-
[EXCEL VBA]指定した文字と文字...
-
縦型カレンダーを横型にできま...
-
excel データを2行づつコピー
-
ExcelVBA特定の列にデータがあ...
-
エクセルで階層図を作る方法
-
【VBA】条件に一致しない行を削...
-
EXCEL マクロで下から10行目ま...
-
Excelで、マウスで範囲を選択し...
-
Excel VBAでオートフィルタで抽...
-
エクセルVBAで3つ以上の複...
-
VBAでの重複データに色付け
-
エクセルマクロでグループごと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロで最終行を取得してコピ...
-
【VBA】条件に一致しない行を削...
-
Excel VBAでオートフィルタで抽...
-
数値に見えるものはすべて数値...
-
VB.net
-
列から特定の文字列検索→該当以...
-
エクセルで空白行を削除する ...
-
Excel マクロ 検索結果を別シ...
-
エクセルのデータがない行には...
-
【マクロ】A列最終行までを、カ...
-
【VBA】条件に一致しない行を削...
-
各個体に対する平均値の自動計...
-
エクセルのVBAで指定した行数の...
-
EXCEL VBAでA列にある空白行よ...
-
VBAでの重複データに色付け
-
空白を複数行一気に挿入するには?
-
エクセルで階層図を作る方法
-
vbaエクセルマクロについて she...
-
【至急】Excel 同一人物の情報...
-
Excel97 指定した行だけマク...
おすすめ情報