Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
列の右から数えて10個(セル)コピー
投稿日時: 20/01/28 14:54:45
投稿者: コッスルモリ

お世話になります。
 
2列目の一番右に入力されているセルから左に10個(セル)コピーするにはどうすれば
よろしいでしょうか?

回答
投稿日時: 20/01/28 15:01:29
投稿者: WinArrow
投稿者のウェブサイトに移動

2列ということは、その列はB列ということですか?
若しそれだと、B列ならばそのセルも含めて2個のセルがあるから
左へ10個は無理。
 
何か勘違いしていますか?
 
もっと、他人にわかるように
シートのレイアウトなり、詳しい説明を言えてください。
 

回答
投稿日時: 20/01/28 15:03:34
投稿者: mattuwan44

>2行目の一番右に入力されているセルから左に10個(セル)コピーする
 

with activesheet.cells(2,activesheet.columns.count).end(xltoleft)
    activesheet.range(.offset(,-9),.cells).copy
end with

 
2「行」目ですよね?
 
ときどき、行と列をテレコで表現される方が居るけどなんでだろう。。。

投稿日時: 20/01/28 16:47:04
投稿者: コッスルモリ

mattuwan44 さんの引用:
>2行目の一番右に入力されているセルから左に10個(セル)コピーする
 
with activesheet.cells(2,activesheet.columns.count).end(xltoleft)
    activesheet.range(.offset(,-9),.cells).copy
end with

 
2「行」目ですよね?
 
ときどき、行と列をテレコで表現される方が居るけどなんでだろう。。。

 
失礼いたしました。行 です
 

回答
投稿日時: 20/01/28 17:54:05
投稿者: WinArrow
投稿者のウェブサイトに移動

>失礼いたしました。行 です
 
そうだよね・・・・
 
余計なお世話かもしれませんが、
レスのコードをそのままコピペだけで終わりではないですよね?
コードの意味を理解して、応用できるようにしていただきたいですね・・・
例えば、右端のセルより左に10個のセルが存在しないときの対処は?
 
 
 

投稿日時: 20/01/28 17:58:21
投稿者: コッスルモリ

コッスルモリ さんの引用:
mattuwan44 さんの引用:
>2行目の一番右に入力されているセルから左に10個(セル)コピーする
 
with activesheet.cells(2,activesheet.columns.count).end(xltoleft)
    activesheet.range(.offset(,-9),.cells).copy
end with

 
2「行」目ですよね?
 
ときどき、行と列をテレコで表現される方が居るけどなんでだろう。。。

 
失礼いたしました。行 です
 

 
wb2.Worksheets(2).Cells(2, wb2.Worksheets(2).Columns.Count).End (xlToLeft)
 wb2.Worksheets(2).Range(.Offset(, -9), .Cells).Copy
 wb2.Worksheets(3).Range("B4:O4").PasteSpecial _
                                 Paste:=xlPasteValues, _
                                 Operation:=xlNone, _
                                 SkipBlanks:=False, _
                                 Transpose:=False
 
上記形で変換してみましたが、(.Offsetでエラーメッセージがでてしまいます。
どこが違うか、教えて頂けますでしょうか?

回答
投稿日時: 20/01/28 18:16:27
投稿者: mattuwan44

>どこが違うか、教えて頂けますでしょうか?
 
With 
 
という単語が抜けてますが、どうお考えでしょうか?
 
解らない言葉は、辞書を引くなり、ヘルプを見るなり、入門書を読むなり、Webで検索するなりして、
調べていただけませんか?
 

with wb2.Worksheets(2)
    with .Cells(2, .Columns.Count).End (xlToLeft)
        application.Range(.Offset(, -9), .Cells).Copy
    end with
end with
wb2.Worksheets(3).Range("B4").PasteSpecial Paste:=xlPasteValues

 
僕はあなたが勉強しなくても困りませんが、
コッスルモリさんは覚えたいんですよね?
なら勉強しなきゃいけないのでは?
 
Withって何ですか?>
http://officetanaka.net/excel/vba/beginner/16.htm
 
見よう見まねも必要ですが、見よう見まねだけでは出来ることは限られます。
一行や一単語の意味をしっかり理解しましょう。

回答
投稿日時: 20/01/28 19:24:09
投稿者: WinArrow
投稿者のウェブサイトに移動

質問…ちょっとした疑問
 
転記元のセルの個数が10個
に対して
転記先のセルの個数が14個
なのはなぜ?

回答
投稿日時: 20/01/28 21:19:34
投稿者: WinArrow
投稿者のウェブサイトに移動

こんな方法も
 
With wb2.Worksheets(2).Cells(2, wb2.Worksheets(2).Columns.Count).End(xlToLeft)
  With wb2.Worksheets(2).Range(.Offset(, -9), .Cells)
    wb2.Worksheets(3).Range("B4").Resize(1, .Columns.Count).Value = .Value
  End With
End With
 
 
※Copyメソッドを使用していません。
※Copyメソッドを使った場合は、
Application.CutCopyMode = False
で選択したセルを解除しておく必要がある。

回答
投稿日時: 20/01/28 21:56:10
投稿者: simple

こんな書き方もあると思います。Bookは省略しています。Range変数rの宣言も。

    Set r = Worksheets(2).Cells(2, Columns.Count).End(xlToLeft)
    r.Offset(, -9).Resize(1, 10).Copy
    Worksheets(3).Range("B4").PasteSpecial Paste:=xlPasteValues

Withはこの際学習した方がよいと思います。ただし、
Range(.Offset(, -9), .Cells)
の第二引数の使い方なんか、結構難しそうかもしれませんね。

投稿日時: 20/01/29 17:56:54
投稿者: コッスルモリ

皆様ありがとうございます。
 
第二因数やwithなど、勉強になる事ばかりでしたm(_ _)m