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

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

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

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

Q&A

解決済

3回答

19013閲覧

VBA 実行時エラー424(オブジェクトが必要です)の原因を教えて下さい。

SawadaKazuki

総合スコア7

VBA

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

1グッド

0クリップ

投稿2018/07/24 11:47

以下のコードを実行してみると、
lastRow = ws.Cells(Row.count, 1).End(xlUp).Row
の部分で、実行時エラー424(オブジェクトが必要です)が出てきてしまいます。
Set lastRow = ws.Cells(Row.count, 1).End(xlUp).Row
としてもダメでした。

どなたか、教えてくだされば幸いです。
宜しくお願いします。

VBA

1Sub 計算_Click() 2 Call reCalc 3End Sub 4 5Sub reCalc() 6 7 file = Application.GetOpenFilename(",*.xlsx") 8 9 Set wb = Workbooks.Open(file) 10 11 Set ws = wb.Worksheets(1) 12 13 14 Dim lastRow As Integer 15 16 lastRow = ws.Cells(Row.count, 1).End(xlUp).Row 17 18 19 Dim lastRow2 As Integer 20 21 lastRow2 = ThisWorkbook.Worksheets("sheet1").Cells(Row.count, 1).End(xlUp).Row 22 23 24 Dim a As Integer 25 Dim count As Integer 26 27 For i = 2 To lastRow 28 count = 0 29 30 For j = i + 1 To lastRow 31 If Cells(i, 1) = Cells(j, 1) Then 32 a = Cells(i, 1) 33 count = count + 1 34 Else 35 Exit For 36 End If 37 Next j 38 39 For k = 2 To lastRow2 40 If Cells(k, 1).Value = Cells(i, 1) Then 41 Cells(k, 2).Value = count 42 Exit For 43 End If 44 Next k 45 46 47 Next i 48 49 50 51 52 53 54 55 56 57End Sub
chatarow👍を押しています

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

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

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

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

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

guest

回答3

0

ベストアンサー

問題が起きたコードで使っている Row の定義が、質問に書かれたコードには見当たりません。

VBAでは、変数のデフォールトの型(型を指定せずに宣言された場合の方)はVariantです。
そして、variantには count というプロパティがありません。

そのため、「.countとついているから、変数Rowは、countというプロパティを持つオブジェクトじゃないといけないんですけどぉぉぉ、variantなんですよね(泣き)」というエラーメッセージが発生したのです。

この問題は、変数Rowを適切なクラスのオブジェクトとして定義すれば、解決します。

投稿2018/07/24 12:06

coco_bauer

総合スコア6915

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

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

SawadaKazuki

2018/07/24 13:14

丁寧な解説、ありがとうございました。 無事、解決することができました。
guest

0

iruyasさんの回答と同じですが、記述に誤りがあると思われます。

(正)lastRow = ws.Cells(Rows.count, 1).End(xlUp).Row
(後)lastRow = ws.Cells(Row.count, 1).End(xlUp).Row

投稿2018/07/24 12:55

TanakaHiroaki

総合スコア1063

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

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

SawadaKazuki

2018/07/24 13:13

解決できました。ありがとうございました
guest

0

>lastRow = ws.Cells(Row.count, 1).End(xlUp).Row
lastRow = ws.Cells(ws.Rows.count, 1).End(xlUp).Row

投稿2018/07/24 11:56

iruyas

総合スコア1067

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

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

SawadaKazuki

2018/07/24 13:13

解決できました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問