Vba 如何使用VBScript在Excel中查找EmptyRow

Vba 如何使用VBScript在Excel中查找EmptyRow,vba,excel,vbscript,Vba,Excel,Vbscript,希望你们都做得很好。 我在vb中编写了一个脚本,excel将在其中打开,它将在a列中找到一个空行&它将输入我在第一个输入框中编写的内容。 但是代码有一些问题。 我不知道如何找到空行。 我需要在vbs文件中执行,而不是在vba中执行(我不知道区别..抱歉) 谢谢你的帮助。。等待答复 请在下面找到我的代码: Option Explicit Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject") Dim Exce

希望你们都做得很好。 我在vb中编写了一个脚本,excel将在其中打开,它将在a列中找到一个空行&它将输入我在第一个输入框中编写的内容。 但是代码有一些问题。 我不知道如何找到空行。 我需要在vbs文件中执行,而不是在vba中执行(我不知道区别..抱歉) 谢谢你的帮助。。等待答复

请在下面找到我的代码:

    Option Explicit
Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim ExcelObj : Set ExcelObj = CreateObject("Excel.Application")
Dim x,y,objWorkbook,objWorksheet
x=InputBox("Enter the Expense Description..","Expense Description")
y=InputBox(x&"Enter the amount spent today..","Amount Spent")
ExcelObj.Visible = True
Set objWorkbook = ExcelObj.Workbooks.Open("C:\Users\Mohammed Sajjad\Desktop\notss\SelfExpense.xlsx")
Set objWorksheet = objWorkbook.Worksheets(1)
Call TransInfo
Dim unusedRow
unusedRow = Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 0).Row
REM Dim emptyRow
REM emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
REM 'Transfer information
REM Cells(emptyRow, 1).Value
Sub TransInfo()
    With ExcelObj
    .Application.visible = True
    '.Workbooks.Add
    .Cells(1,1).Value="EXPENSE DESCRIPTION"
    .Cells(unusedRow,2).Value=x
    .Cells(2,1).Value="SPENT AMOUNT"
    .Cells(2,2).Value=y
    .Cells()
    End With
    '.ActiveWorkbook.SaveAs "C:\Users\Mohammed Sajjad\Desktop\notss\SelfExpense.xlsx"
    objWorkbook.Save()
    ExcelObj.Quit
End Sub
MsgBox("Transfer Complete")
试试这个:

unusedRow = 1 + objWorksheet.UsedRange.Row + objWorksheet.UsedRange.Rows.Count
已测试。vbs

Option Explicit

Dim fn, x, y, xl, wb, itm, ws, unusedRow

fn = "C:\test.xlsx"

x = InputBox("Enter the Expense Description", "Expense Description")
If Len(x) > 0 Then          'if x is empty (length of 0) the user canceled
    y = InputBox("Amount spent on " & x & " today", "Amount Spent on " & x)
    If Len(y) > 0 Then      'if y is empty (length of 0) the user canceled
        On Error Resume Next    'we'll get an error if Excel is not open
        Set xl = GetObject(, "Excel.Application")   'find Excel instance
        If Err Then         'if error - there were no Excel instances open
            Set xl = CreateObject("Excel.Application")  'create a new objecr
        Else                'we found an instance of Excel already open
            For Each itm In xl.Workbooks    'for each file already open in Excel
                If itm.Name = fn Then       'if file name is our file name
                    Set wb = itm            'set a reference to it
                    Exit For                'exit the loop
                End If
            Next
        End If
        If wb Is Nothing Then Set wb = xl.Workbooks.Open(fn) 'if file was not open
        Set ws = wb.Worksheets(1)           'set a reference to 1st sheet in our file
        unusedRow = ws.UsedRange.Row + ws.UsedRange.Rows.Count  'get first empty row

        With ws
             .Cells(unusedRow, 1).Value = "EXPENSE DESCRIPTION" 'set cell A5
             .Cells(unusedRow, 2).Value = x                     'set cell B5
             .Cells(unusedRow + 1, 1).Value = "SPENT AMOUNT"    'set cell A6
             .Cells(unusedRow + 1, 2).Value = y                 'set cell B6
        End With
        wb.Save 'save file
        xl.Quit 'close Excel
        MsgBox "Transfer Complete"
    End If
End If

UsedRange以及如何确定最后一行和最后一列


您查找未使用行的方式有什么问题?
UsedRange不一定从第一行开始。你需要UsedRange.Row+UsedRange.Rows.count谢谢朋友们的帮助。:)我现在会尝试,并会让你知道结果。感谢巴迪的精彩代码。它就像一个符咒。你能解释一下你的密码吗。事实上,我对vbs很陌生。像<代码>代码
对于xl.Workbooks中的每个itm,如果itm.Name=fn,则设置wb=itm Exit为End如果下一个End如果wb为空,则设置wb=xl.Workbooks.Open(fn)设置ws=wb.Worksheets(1)unusedRow=ws.UsedRange.Row+ws.UsedRange.Rows.Count
code
。。请解释一下这部分。。ThanksI添加了注释来解释代码的作用。请将对您有效的答案标记为已接受,作为其他人的参考,并随时更新您找到的所有有用答案。谢谢paul的解释。我想结束这个问题的回答。我该怎么做?(对不起,我是stackoverflow新手)该问题的答案已被接受-感谢您的更新,欢迎来到stackoverflow!