[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エラー オブジェクトが必要です』(すいか)
VBA初心者です。
色々調べましたが、なぜエラーが起きるのかわかりません。
どなたかご教授お願い致します。
エラー424 オブジェクトが必要ですと表示されます
Dim sht As Worksheet
Dim Row As Long
Row = Cells(Rows.Count, 1).End(xlUp).Row
For Each sht In Worksheets
Select Case sht.Name Case "操作", "集計" Case Else sht.Range("A1").CurrentRegion.Offset(1, 0).Copy _ ※ここでエラー Sheets("集計").Cells(Row, 1).End(xlUp).Row.Offset(1, 0) End Select Next
End Sub
< 使用 Excel:Excel2016、使用 OS:Windows10 >
Rowをはずしてみては?
(渡辺ひかる) 2019/07/13(土) 21:46
修正してエラーは出なくなりましたが、結果が求めるものとは違っていました。
完了イメージとして、各シートにある値を、シート集計に貼り付けることですが、
結果は、最終シートの結果のみの貼り付けとなっております。
もう一アドバイスお願い致します。
(すいか) 2019/07/13(土) 22:01
これで分かりますか?
(渡辺ひかる) 2019/07/13(土) 22:07
ただ、Caseの中に入れない時は別のやり方はありますか?
修正後
For Each sht In Worksheets
Select Case sht.Name Case "操作", "集計" Case Else Row = Cells(Rows.Count, 1).End(xlUp).Row sht.Range("A1").CurrentRegion.Offset(1, 0).Copy _ Sheets("集計").Cells(Row, 1).Offset(1, 0) End Select Next
End Sub
(すいか) 2019/07/13(土) 22:11
Sub test_改() Dim sht As Worksheet Dim Row As Long Row = Cells(Rows.Count, 1).End(xlUp).Row For Each sht In Worksheets Select Case sht.Name Case "操作", "集計" Case Else sht.Range("A1").CurrentRegion.Offset(1, 0).Copy _ Sheets("集計").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) End Select Next End Sub
(もこな2) 2019/07/13(土) 22:18
Sub test_改() Dim sht As Worksheet
For Each sht In Worksheets Select Case sht.Name Case "操作", "集計" Case Else sht.Range("A1").CurrentRegion.Offset(1, 0).Copy _ Sheets("集計").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) End Select Next End Sub
(もこな2) 2019/07/13(土) 22:24
本来なら別スレを立てるべきでしょうが、都度都度エラーが出るのでアドバイスお願い致します。
エラー: メソッド・データメンバがみつかりません。
やりたいこと: 各シートのA列をB-F列にコピーしたい
Sub test2()
Dim sht As Worksheet
Dim Rng As Range
Set Rng = Range("A")
For Each sht In Worksheets
Select Case sht.Name Case "操作", "集計" Case Else sht.Rng.Copy sht.Range("B:F") ←ここでエラーがでます End Select Next End Sub (すいか) 2019/07/13(土) 22:33
シートが20ある場合だと20も代入するのでeachを使用して処理したいのです。
(すいか) 2019/07/14(日) 10:09
■
>メソッド・データメンバがみつかりません。
たぶん、【sht】というシートオブジェクトに対して【Rng.Copy】というメソッドを実行しなさい。
っていう意味と理解され、シートオブジェクトのメンバーに、そのようなメソッドは無い。って怒られているんだとおもいます。
■
質問された箇所以前に、
Set Rng = Range("A")
アクティブシートの「A」という名前を付けたセル範囲 という意味になっていると思われますので直した方がよいとおもいます。
■
〜.Copy sht.Range("B:F")
今回は、1列をずらしながらコピーして並べたいのですよね?
これだと、意味が違っちゃいますよ
■
想像で補完して、修正してみました。
コンパイルエラーにならないことくらいしかチェックしてませんが、興味があればステップ実行して研究してみてください。
Sub test2() Dim dstRNG As Range Dim sht As Worksheet
Set dstRNG = Worksheets("集計").Range("A2")
Stop '←ブレークポイントの代わり
For Each sht In Worksheets If sht.Name <> "操作" And sht.Name <> "集計" Then dstRNG.Offset(-1).Value = sht.Name sht.Range("A1", sht.Cells(Rows.Count, "A").End(xlUp)).Copy dstRNG
Set dstRNG = dstRNG.Offset(, 1) End If Next sht
End Sub
(もこな2) 2019/07/14(日) 10:47
解決しました
(すいか) 2019/07/14(日) 12:44
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.