Excel 运行时错误438消息确定最后一行

Excel 运行时错误438消息确定最后一行,excel,vba,runtime-error,Excel,Vba,Runtime Error,我明白了 运行时错误438对象不支持此属性或方法 在“最后一行”上 我正在尝试根据Excel工作表中的数据设置多个Outlook任务(更新证书的提醒)。每行包括为每个证书设置每个任务所需的数据 我需要用数据确定最后一行 整个代码 Dim olApp作为Outlook.Application 将任务设置为TaskItem Dim wsMEDCMain As工作表 将最后一行变暗为长,将行数变暗为长 Set olApp=newoutlook.Application 设置wsMain=ThisWork

我明白了

运行时错误438对象不支持此属性或方法

在“最后一行”上

我正在尝试根据Excel工作表中的数据设置多个Outlook任务(更新证书的提醒)。每行包括为每个证书设置每个任务所需的数据

我需要用数据确定最后一行

整个代码

Dim olApp作为Outlook.Application
将任务设置为TaskItem
Dim wsMEDCMain As工作表
将最后一行变暗为长,将行数变暗为长
Set olApp=newoutlook.Application
设置wsMain=ThisWorkbook.Worksheets(“Main”)
使用wsMain
LastRow=单元格(Rows.Count,“C”)。EndofUp.Row'LastRow然后退出子行
对于RowNumber=2到LastRow
如果Len(单元格(行数,“C”).值)>0,则
'创建任务项
设置olTask=olApp.CreateItem(olTaskItem)
带奥尔塔克
.Subject=单元格(行号,“C”)。值
.Status=olTaskNotStarted
.重要性=低重要性高
.StartDate=单元格(行号,“B”)。值
.DueDate=单元格(行号,“A”)。值
.提醒集=真
.ReminderTime=.StartDate&(“09:00:00”)
.Body=Cells(RowNumber,“D”).Value&vbNewLine&(“证书详细信息:”)&Cells(RowNumber,(“C”).Value
拯救
以
'清除对象变量
设置olTask=Nothing
如果结束
下一行号
以
端接头

您需要将
EndofUp
替换为
End(xlUp)
一个可以为您修复它的组件

您需要将
EndofUp
替换为
End(xlUp)
an,这样您就可以修复它了

您应该对代码进行一些修改,@Darren Bartrup-Cook已经列出了一些修改

  • 正在查找最后一行:
  • 更改:

    LastRow = Cells(Rows.Count, "C").EndofUp.Row 
    
    If Len(Cells(RowNumber, "C").Value) > 0 Then
    
    与:

    LastRow = .Cells(.Rows.Count, "C").End(xlUp).Row 
    
  • 查看单元格的
    Len
    ,也不能使用
    wsMain
    工作表对象完全限定
  • 更改:

    LastRow = Cells(Rows.Count, "C").EndofUp.Row 
    
    If Len(Cells(RowNumber, "C").Value) > 0 Then
    
    与:

  • 避免在另一个
    With
    语句中使用
    With
    语句
  • 这一行:

    With olTask  ' <-- Setting a With inside another With statement
    

    您应该对代码进行一些修改,@Darren Bartrup Cook已经列出了一些修改

  • 正在查找最后一行:
  • 更改:

    LastRow = Cells(Rows.Count, "C").EndofUp.Row 
    
    If Len(Cells(RowNumber, "C").Value) > 0 Then
    
    与:

    LastRow = .Cells(.Rows.Count, "C").End(xlUp).Row 
    
  • 查看单元格的
    Len
    ,也不能使用
    wsMain
    工作表对象完全限定
  • 更改:

    LastRow = Cells(Rows.Count, "C").EndofUp.Row 
    
    If Len(Cells(RowNumber, "C").Value) > 0 Then
    
    与:

  • 避免在另一个
    With
    语句中使用
    With
    语句
  • 这一行:

    With olTask  ' <-- Setting a With inside another With statement
    

    它应该是
    LastRow=.Cells(.Rows.Count,“C”).End(xlUp).Row
    。您正在使用wsMain
    ,但实际上从未“链接”任何范围到它。@DarrenBartrup-Cook的答案中包括将
    Cells()
    链接到
    wsMain
    。但是,稍后在循环中,您会遇到另一个不合格的
    单元格()
    ,如果您希望
    wsMain
    上出现
    语句,请确保将其链接回
    。您好,谢谢Darren,我最终自己也找到了相同的解决方案,。。。但是谢谢你!!我现在有另一个问题,。。。当我反复按F8键时,宏会工作,但当我按包含代码的commandbutton时,宏不会工作。。。。难以置信!谢谢@BruceWayne,我还删除了带有wsMain的,并添加了wsMain。任何需要的地方。不知道我是怎么解决的,。。。我猜某些事情开始慢慢但肯定有意义了!它应该是
    LastRow=.Cells(.Rows.Count,“C”).End(xlUp).Row
    。您正在使用wsMain
    ,但实际上从未“链接”任何范围到它。@DarrenBartrup-Cook的答案中包括将
    Cells()
    链接到
    wsMain
    。但是,稍后在循环中,您会遇到另一个不合格的
    单元格()
    ,如果您希望
    wsMain
    上出现
    语句,请确保将其链接回
    。您好,谢谢Darren,我最终自己也找到了相同的解决方案,。。。但是谢谢你!!我现在有另一个问题,。。。当我反复按F8键时,宏会工作,但当我按包含代码的commandbutton时,宏不会工作。。。。难以置信!谢谢@BruceWayne,我还删除了带有wsMain的,并添加了wsMain。任何需要的地方。不知道我是怎么解决的,。。。我猜某些事情开始慢慢但肯定有意义了!