[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『実行時エラー1004の解消』(hiro)
以下のコードを作成したのですが、
実行時エラー1004(アプリケーション定義またはオブジェクトの定義エラー)が起きてしまいどのようにコードを書きなおしたらよいかわからず困っております。
不勉強で申し訳ありませんが、どなたかご教示お願いします。
データ削除試作品3のメソッドで起きているのですが、
どのように書き直したらよいでしょうか。
Sub リスト作成()
Dim Buf As String Dim STR As String Dim Lost_Row As String Dim Directory As String Dim TempData
Dim i As Long ' インデックス用の変数 Dim z As Long ' インデックス用の変数
Dim ws As Worksheet Dim sheet As Worksheet Set sheet = ActiveSheet ' 現在アクティブなシートを取得する1
'dateシート作成 Worksheets.Add After:=Worksheets(Worksheets.Count) ActiveSheet.Name = "date" sheet.Activate
Set ws = ThisWorkbook.Worksheets("Master") Set da = ThisWorkbook.Worksheets("date")
'最終行を所得 Lost_Row = Worksheets("Master").Cells(3, 1).End(xlDown).Row Debug.Print Lost_Row
'コピー用データ取得 TempData = ws.Range(ws.Cells(3, 1), ws.Cells(Lost_Row, 15)).Value
'detaシートにコピー da.Range(da.Cells(2, 1), da.Cells((Lost_Row - 1), 15)).Value = TempData
'データ削除試作品 データ削除試作品3
End Sub
'データ削除試作品3
Public Sub データ削除試作品3()
Dim i1 As Long
Dim MyArray As Variant
Set da = ThisWorkbook.Worksheets("date") Worksheets("date").Activate ' 「Sheet1」のシートをアクティブ
MyArray = da.Range(Cells(2, 15), da.Cells(Lost_Row - 1, 15))
For i1 = 2 To Lost_Row
MyArray(i, 15) = da.Replace(MyArray(i, 15), "Sum", "")
Next i1
da.Range(Cells(2, 1), da.Cells(Lost_Row - 1, 15)) = MyArray
End Sub
< 使用 Excel:Office365、使用 OS:Windows10 >
エラーはどこの行で発生しますか? MyArray = da.Range(Cells(2, 15), da.Cells(Lost_Row - 1, 15) だとしたら Lost_Rowになにも設定されていないからではないでしょうか。
(めいぷる) 2022/01/14(金) 15:35
プログラムの先頭に"Option Explicit"を記載して再確認しました
めいぷ様 Lost_Rowには一応値が入っておりました。
Option Explicit
Public Sub リスト作成()
Dim Buf As String Dim STR As String Dim Lost_Row As Long Dim Directory As String
Dim TempData
Dim i As Long ' インデックス用の変数 Dim z As Long ' インデックス用の変数
Dim da As Worksheet
Dim sheet As Worksheet Set sheet = ActiveSheet ' 現在アクティブなシートを取得する1
'シートがあるかどうか調べて、ある場合はそのシートを削除 Delete_sheet
'dateシート作成 Worksheets.Add After:=Worksheets(Worksheets.Count) ActiveSheet.Name = "date" sheet.Activate
Set ws = ThisWorkbook.Worksheets("Master")
Set da = ThisWorkbook.Worksheets("date")
'最終行を所得 Lost_Row = Worksheets("Master").Cells(3, 1).End(xlDown).Row Debug.Print Lost_Row
'コピー用データ取得 TempData = ws.Range(ws.Cells(3, 1), ws.Cells(Lost_Row, 15)).Value
' Debug.Print 2
' kp.Range(kp.Cells(2, 1), kp.Cells((Lost_Row - 1), 15)).Value = TempData
'
'detaシートにコピー da.Range(da.Cells(2, 1), da.Cells((Lost_Row - 1), 15)).Value = TempData
Call データ削除試作品3(Lost_Row)
End Sub
'データ削除試作品3
Public Sub データ削除試作品3(Lost_Row As Long)
Dim da As Worksheet Dim i1 As Long Dim MyArray As String
Debug.Print 55 Set da = ThisWorkbook.Worksheets("date")
Debug.Print Lost_Row
Debug.Print 66 MyArray = da.Range(Cells(2, 15), da.Cells(Lost_Row - 1, 15))
Debug.Print MyArray ' ' For i1 = 2 To Lost_Row ' ' MyArray(i, 15) = da.Replace(MyArray(i, 15), "Sum", "") ' ' Next i1 ' ' da.Range(Cells(2, 1), da.Cells(Lost_Row - 1, 15)) = MyArray '
End Sub
(hiro) 2022/01/14(金) 15:48
Dim MyArray As String MyArray = da.Range(Cells(2, 15), da.Cells(Lost_Row - 1, 15)) 配列で宣言されていません。 (tkit) 2022/01/14(金) 15:54
>Dim MyArray As String >MyArray = da.Range(Cells(2, 15), da.Cells(Lost_Row - 1, 15))
もっと突っ込みどころがありますね。 1)配列宣言していない 2)String型に対しRangeオブジェクトを代入しようとしている 3)Range内のcellsにシート指定が無い(ActiveSheetになっている)
他のコードも合わせて確認してください
(tkit) 2022/01/14(金) 16:09
(hiro) 2022/01/14(金) 16:10
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.