Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何将LastRow传递给函数_Excel_Vba - Fatal编程技术网

Excel 如何将LastRow传递给函数

Excel 如何将LastRow传递给函数,excel,vba,Excel,Vba,我试图找到A列的最后一行,从A列和B列的组合框选择中添加两个值,然后调用弹出式日历(Trevor Eyre编写的日历),并将我选择的日期写入E列。我在下面发布的代码可以工作,但我必须在日期输入之前选择并单击3次。如何修改代码,以便单击一次就可以修改?有人能给我指出正确的方向吗?多谢各位 Dim ws As Worksheet Set ws = Sheet1 Dim LastRow As Long, i As Long LastRow = Sheet

我试图找到A列的最后一行,从A列和B列的组合框选择中添加两个值,然后调用弹出式日历(Trevor Eyre编写的日历),并将我选择的日期写入E列。我在下面发布的代码可以工作,但我必须在日期输入之前选择并单击3次。如何修改代码,以便单击一次就可以修改?有人能给我指出正确的方向吗?多谢各位

    Dim ws As Worksheet
    Set ws = Sheet1
    Dim LastRow As Long, i As Long
       
    LastRow = Sheets("PM Schedule").Cells(Rows.Count, 1).End(xlUp).row

    For i = LastRow To 1 Step -1
    
        If Sheets("PM Schedule").Cells(i, 1) <> " " Then
        
            LastRow = i + 1
            
            Exit For
        
        End If
     
    Next

    ASSETS_ID_NUMBER_INPUT_BOX_2.value = UCase(ASSETS_ID_NUMBER_INPUT_BOX_2.value)
    ASSETS_ALL_MAINT_TASKS_LIST.value = UCase(ASSETS_ALL_MAINT_TASKS_LIST.value)

    Sheet1.Cells(LastRow, 1).value = ASSETS_ID_NUMBER_INPUT_BOX_2.value
    Sheet1.Cells(LastRow, 2).value = ASSETS_ALL_MAINT_TASKS_LIST.value

    Dim dateVariable As Date
    dateVariable = CalendarForm.GetDate
    CalendarForm.GetDate
    
    MyDate = CalendarForm.GetDate
    
    If MyDate > 0 Then

        Sheet1.Cells(LastRow, 5).value = MyDate
    
    End If

End Sub
Dim ws As工作表
设置ws=Sheet1
昏暗的最后一排一样长,我一样长
LastRow=工作表(“PM计划”)。单元格(Rows.Count,1)。结束(xlUp)。行
对于i=最后一行到1步骤-1
如果表格(“PM附表”)。单元格(i,1)”,则
LastRow=i+1
退出
如果结束
下一个
资产\标识\编号\输入\框\ 2.value=UCase(资产\标识\编号\输入\框\ 2.value)
ASSETS\u ALL\u MAINT\u TASKS\u LIST.value=UCase(ASSETS\u ALL\u MAINT\u TASKS\u LIST.value)
Sheet1.单元格(最后一行,1).值=资产\u ID\u编号\u输入框\u 2.值
Sheet1.单元格(LastRow,2).value=ASSETS\u ALL\u MAINT\u TASKS\u LIST.value
Dim Date变量作为日期
dateVariable=CalendarForm.GetDate
CalendarForm.GetDate
MyDate=CalendarForm.GetDate
如果MyDate>0,则
Sheet1.单元格(最后一行,5)。值=MyDate
如果结束
端接头

根据Mike67,您要对日历例程进行三次呼叫(三次单击):


在设置单元格日期值之前,请调用
MsgBox cstr(LastRow)&“&MyDate
。这可能有助于调试问题。我将MsgBox cstr(LastRow)和“&MyDate”放在Sheet1.Cells(LastRow,5)前面的代码中。value=MyDate。MsgBox显示位置15和我在3次单击日期后选择的日期。我没有看到任何真正有助于解决问题的东西。谢谢你的建议,确实有帮助。这意味着整个代码块被调用了三次。检查调用此函数的任何按钮或代码。感谢您指出这一点@Mike67I删除了前两个呼叫,只需单击一下即可正常工作。我没有意识到这些都是如何调用calendar函数的不同示例。谢谢你的帮助@退休者