Vba 如何使用VBScript在Excel中查找EmptyRow
希望你们都做得很好。 我在vb中编写了一个脚本,excel将在其中打开,它将在a列中找到一个空行&它将输入我在第一个输入框中编写的内容。 但是代码有一些问题。 我不知道如何找到空行。 我需要在vbs文件中执行,而不是在vba中执行(我不知道区别..抱歉) 谢谢你的帮助。。等待答复 请在下面找到我的代码: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
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.Countcode
。。请解释一下这部分。。ThanksI添加了注释来解释代码的作用。请将对您有效的答案标记为已接受,作为其他人的参考,并随时更新您找到的所有有用答案。谢谢paul的解释。我想结束这个问题的回答。我该怎么做?(对不起,我是stackoverflow新手)该问题的答案已被接受-感谢您的更新,欢迎来到stackoverflow!