質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

1759閲覧

VBAの処理で、コンパイルエラーが出ます

Chihiro3

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2020/11/12 04:55

編集2020/11/12 05:10

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
VBAで別のファイルを取得し、シート2にあるデータの合計値をだし、
マクロが記載されているファイルにその値を追記していくというマクロを組んでいます。
一覧化まではうまくいったのですが、'一つ一つ開いて、処理をしてまとめるという表記以降、
以下のエラーメッセージが発生しました。

処理としては
①同じフォルダにあるデータというフォルダにあるファイルの一覧をだす
②一覧化したあと、一つ一つ開き
1)最終行にsum関数を追加、14行目までsum関数を入れたのち、値に直す
2)まず2行目をコピーペースト
3)上書きするように最終行をコピーしてペースト(2行目のデータは右端にあるデータだけ残ればいいので、被らなければOK

発生している問題・エラーメッセージ

コンパイルエラー:メソッドまたはデータメンバーが見つかりません

おそらくですが、.Resize(1, 14)のところでエラーになっています。
ただ、黄色くエラー表示されているのは、1行目のsubのところです

該当のソースコード

Sub データ整形() Dim i As Long Dim j As Long Dim sFileName As String Dim wb As Workbook Dim ws As Worksheet Dim s一覧 As Worksheet Dim sデータ As Worksheet Set s一覧 = Worksheets("一覧") Set sデータ = Worksheets("データ") 'データというフォルダに入っているファイルを一覧にする With s一覧 .Range("A:A").ClearContents sFileName = Dir(ThisWorkbook.Path & "\データ*.xls*") i = 1 Do Until sFileName = "" .Cells(i, 1) = ThisWorkbook.Path & "\データ\" & sFileName i = i + 1 sFileName = Dir() Loop End With '一覧化終わり '一つ一つ開いて、処理をしてまとめる With sデータ .Range("A1").CurrentRegion.Offset(1).ClearContents For i = 1 To s一覧.Cells(s一覧.Rows.Count, 1).End(xlUp).Row Set wb = Workbooks.Open(s一覧.Cells(i, 1)) Set ws = wb.Worksheets(2) j = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 ws.Range("B2").End(xlDown).Offset(1, 0) = _ "=SUM(" & Range(Range("B2"), Range("B2").End(xlDown)).Address(False, False) & ")" ws.Range("B2").End(xlDown).Offset(1, 0).Value = ws.Range("B2").End(xlDown).Offset(1, 0).Value ws.Range("B2").End(xlDown).Offset(1, 0).AutoFill Destination:=.Resize(1, 14) ws.Rows(2).Copy Destination:=.Cells(j, 1) ws.Range(Range("B2"), Cells(Rows.Count, 1).End(xlUp)).Copy Destination:=.Cells(j, 1) wb.Close savechanges:=False Next End With End Sub

試したこと

別ファイルを開いているのでワークシートを指定しているのですが…よくわかりません

補足情報(FW/ツールのバージョンなど)

VBA初心者です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/11/12 04:59

・エラー発生箇所はどこですか? ・コードは「コードの挿入」で記入してください。
Chihiro3

2020/11/12 05:10

すみません、追記いたしました。ご指摘ありがとうございます。
guest

回答1

0

ベストアンサー

ワークシートは Resize プロパティを持っていませんので当然かと。

追記
一応ですが、現状 sデータ.Resize(1,14) になってるという意味です。
Worksheet ではなく Range オブジェクトを指定して下さい。

投稿2020/11/12 05:14

編集2020/11/12 05:29
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chihiro3

2020/11/12 05:30

なるほど、ありがとうございます。こちらってoffsetにしても同じく動かないと思うのですが、 右に14個移動のような指示が出したい場合、どのように指定してあげたらよろしいでしょうか… 調べても分からず…
退会済みユーザー

退会済みユーザー

2020/11/12 06:09 編集

もちろん、提示頂いたコードで Resize を Offset にしても動きません。 全く同じ問題ですが、Worksheet は Offset を持っていません。 そういう問題ではなく、 現状、ワークシート「sデータ」を右へ14個移動させようとしているという話です。 (現状は移動というか、拡張ですけど) 移動させたいのはセルではないですか。 であればそのセルを指定して下さい。 根本的な話ですが、オブジェクト指向を理解しましょう。 どのオブジェクトをどの様に操作したいかを明示する必要があります。
Chihiro3

2020/11/12 10:00

ご回答ありがとうございます。 ’’’ ws.Range("B2").End(xlDown).Resize(, 14) ’’’ にしたところ解決しました!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問