ファイルを開き、ある列の最終行を取得したいのですが、「アプリケーション定義またはオブジェクト定義のエラーです」と表示されます。
Sheetモジュールに書いてます。
Bookを開きr = sh.Cells(Rows.Count, 3).End(xlUp).Rowでとるのですが、sh.cells
にすると上記エラーになります。
sh.を外すとどっからとってきているのか、まったく関係ない値をとってきてしまいます。
ドツボにはまってます。。。
ご教示ください。
VBA
1Private Sub openJKZ1(fp As String) 2 '本部 3 Dim i As Long 4 Dim r As Long 5 Dim c As Long 6 Dim iLine As Long 7 Dim wb As Workbook 8 Dim sh As Worksheet 9 Dim sData(4) As String 10 11 Set wb = Workbooks.Open(Filename:=fp, ReadOnly:=True) 12 Set sh = wb.Sheets(1) 13 iLine = 14 14 r = sh.Cells(Rows.Count, 3).End(xlUp).Row 15 16 For i = 2 To r 17 18' If sh.Cells(i, 3) <> "" Then 19 20 sData(0) = Left(sh.Cells(i, 3), 2).Value 21 sData(1) = sh.Cells(i, 4).Value 22 sData(2) = Right(sh.Cells(i, 3), 1).Value 23 sData(3) = sh.Cells(i, 16).Value 24 sData(4) = sh.Cells(i, 17).Value 25 26 Me.Cells(iLine, 3).Value = Trim$(StrConv(sData(0), vbNarrow)) '講座 27 Me.Cells(iLine, 4).Value = Trim$(sData(1)) '人数 28 Me.Cells(iLine, 5).Value = Trim$(StrConv(sData(2), vbNarrow)) '方式 29 Me.Cells(iLine, 6).Value = Trim$(StrConv(sData(3), vbNarrow)) '修了証書 30 Me.Cells(iLine, 7).Value = Trim$(sData(4)) '連絡網 31 32 iLine = iLine + 1 33' Else 34' Exit For 35' End If 36 37 Next 38 39 Me.Range("C13:L" & CStr(iLine - 1)).Borders.LineStyle = xlContinuous 40 wb.Close 41 42 'エラーチェック 43 r = Me.Cells(Rows.Count, 3).End(xlUp).Row 44 iLine = 14 45 For c = 3 To 5 46 If Me.Cells(iLine, c) = "" Then 47 Me.Cells(iLine, c).Interior.Color = RGB(255, 255, 0) 48 End If 49 iLine = iLine + 1 50 Next 51 52 53 For iLine = 14 To r 54 If Me.Cells(iLine, 3) = 16 And Me.Cells(iLine, 4) = 1 Then 55 Me.Cells(iLine, 3).Interior.coler = RGB(255, 255, 0) 56 ElseIf Me.Cells(iLine, 3) = 27 And Me.Cells(iLine, 4) = 2 Then 57 Me.Cells(iLine, 3).Interior.coler = RGB(255, 255, 0) 58 ElseIf Me.Cells(iLine, 3) = 28 And Me.Cells(iLine, 4) = 2 Then 59 Me.Cells(iLine, 3).Interior.coler = RGB(255, 255, 0) 60 End If 61 62 Next 63 64End Sub
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/10 09:15