プロが教える店舗&オフィスのセキュリティ対策術

ExcelでA列をコピーしたいのですがコピー範囲内に空白セルがあるとそこで終わってしまいます。
全てをコピーするにはどのようなvbaを組めばよろしいでしょうか?
現在
Range("A1").CurrentReg ion.Copy.Cells(Rows.Count,"A").End(xlUp).Offset(1.0)
初心者です。
よろしくお願いします。

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

  • ご返答ありがとうございます。
    やってみたのですが上手く動きません汗

      補足日時:2024/02/06 09:17
  • フォルダ内のデータを集計するvbaを作りたいのです。
    いま作ってるのは

    Dim A'フォル内の1つのブック名を取得
    A=Dir(ThisWorkbook.Path&"/回答/*)
    Do While A <> "" 'ブックを開く
    Workbooks.Open ThisWorkbook.Path&"/回答&A
    With ThisWorkbook.Sheets("集計")
    'アンケート結果をコビ
    Range("A1").CurrentRegion.Copy.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
    ブックを閉じる
    Activeworkbook.Close False
    End With
    Activelorkbook.Close Falsel
    A= Dir()'次のブック名を取得
    Loop
    End Sub
    以上です。

      補足日時:2024/02/06 09:51

A 回答 (9件)

Range("A1").CurrentReg ion.Copy.Cells(Rows.Count,"A").End(xlUp).Offset(1.0)



ActiveSheet.UsedRange.Copy .Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
に変えてみてください・
    • good
    • 1
この回答へのお礼

ご回答ありがとうございました。
無事問題解決しました。
とても助かりました。
ありがとうございました。
質問下手ご迷惑おかけしました。

お礼日時:2024/02/06 15:41

No4です。


私が尋ねているのはイミディエイトウィンドウの話です。
まだ確かめてないですか?
どこが判らなくて出来ないのかを教えてください。
    • good
    • 1

こんにちは



「できない」という情報しかないので、「何をどうしたいのか」わからないため、当たるも八卦の回答しかできませんけれど・・

コピーするのはA列だけで良いと仮定して、コピーする部分のコードを、
 Range("A1").Resize(Cells(Rows.Count, 1).End(xlUp).Row).Copy _
 Destination:=.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
とでもしておけば、その部分に関しては動作すると思います。

しかしながら、(補足にご提示のコードがどのようにして書かれたのものなのか不明ですが)他にもいろいろありそうなので、上記だけで動作するようになるとは限らなそうです。
    • good
    • 1

ちなみに、質問者様はステップ実行のやり方とか、ブレークポイントの設定のやり方はご存知?


ご存知でなければ、まずそれを調べるところからスタートです。
    • good
    • 0
この回答へのお礼

ご返答ありがとうございました。
わからないので調べてみます。

お礼日時:2024/02/06 12:50

勉強しますではなくて、それぞれ何が表示されましたか?


それを見てどの様に思いますか?
と、尋ねてるんです。
他の方の回答でも同じ様に試してみてどう思うかです。
それをどう認識してどうしようか決めるのが貴方の仕事なんです。
つまり、表示されたものがそれぞれ何かと、それをどう思うかを教えて下さい。
    • good
    • 0
この回答へのお礼

保存されたデータの中で空白セルまでがコピーされてそれ以降コピーされない感じです。
例えば1から10の回答で5が空白なら1から4までしかコピーできない。
コピー範囲が1から4までしか指定されない状態です。
空白以降の回答もコピーできるようにしたいのですがそれをどうクリアすればいいかわからない状態です。
ご質問の対してまともな返答ができずすみませんでした。

お礼日時:2024/02/06 12:00

あなたがするべきことはコードを尋ねることじゃありません。


実際に置きていることの確認です。
例えばCopyの行が多分それですよね?
そこにブレークポイントをセットするか、もしくは
ステップ実行でその行が黄色になるまで進めて
その状態で確かめることが必要なんです。

確かめるのはCopyの前と後ろはどんなセル範囲に
なっているかです。
イミディエイトウィンドウに
? Range("A1").CurrentRegion.Address
? Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Address
こうしてセル範囲が自分の思っている通りかを
確認するから理解できるんです。
この作業を怠っていたらうまく行かないで終わってしまいます。
確認した結果どうしますか?
    • good
    • 0
この回答へのお礼

アドレスありがとうございました。
勉強します。

お礼日時:2024/02/06 11:32

> やってみたのですが上手く動きませんでした



A列全体をC列にコピーしたい場合
Columns(1).Copy Destination:=Columns(3)
    • good
    • 0

>.CurrentReg ion



どのような定義で範囲を指定したいのか不明なので参考サイトです
https://tonari-it.com/excel-vba-usedrange-curren …

UsedRange とかで希望通りになりますか?

ならない場合は

はじめと終わりのセルの位置を取得して組み立てる
https://www.limecode.jp/entry/syntax/setrange-da …
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
勉強します。

お礼日時:2024/02/06 09:52

> ExcelでA列をコピーしたいのですが



A列全体をコピーしたいなら、単純に
Columns(1).Copy
ではだめですか?
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます。
やってみたのですが上手く動きませんでした 汗

お礼日時:2024/02/06 09:20

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A