使用子内部的函数(使用Word和Excel的VBA)

我有一个私人的子(命令button)内使用私人function的问题。

它不会返回任何错误…也不会做任何事情。 当我按下Word文档中的命令button时,它应该形成行,并从Excel工作表中导入数据,直到Excel中的最后一行,这就是我正在试图让函数做 – find最后一行工作表。

如果你能看我的代码,并让我知道如果你知道为什么它不会工作,我会很感激。 我需要在Private Sub commandbutton_2_Click()中有这个函数吗? 先谢谢你。

Private Sub CommandButton2_Click() Dim tbl As Table Dim row As row Set tbl = ActiveDocument.Tables(2) Dim objExcel As New Excel.Application Dim exWb As Excel.Workbook On Error Resume Next Set exWb = objExcel.Workbooks.Open("S:\Electro-Protocol\Mot_Protocols\" & TextBox1 & ".xls") Dim lastRow As Integer lastRow = GetLastRow(objExcel, exWb) ActiveDocument.Tables(2).Columns.DistributeWidth For counter = 1 To lastRow tbl.Rows.Add tbl.cell(counter, 1).Range.Text = exWb.Sheets("Tabelle1").Cells(counter, 1) tbl.cell(counter, 2).Range.Text = exWb.Sheets("Tabelle1").Cells(counter, 2) tbl.cell(counter, 3).Range.Text = exWb.Sheets("Tabelle1").Cells(counter, 3) tbl.cell(counter, 4).Range.Text = exWb.Sheets("Tabelle1").Cells(counter, 4) tbl.cell(counter, 5).Range.Text = exWb.Sheets("Tabelle1").Cells(counter, 5) tbl.cell(counter, 6).Range.Text = exWb.Sheets("Tabelle1").Cells(counter, 6) Next counter End Sub Private Function GetLastRow(ByVal objExcel As Excel.Application, ByVal exWb As Excel.Workbook) As Integer Dim lastRow As Integer lastRow = 0 With exWb.Sheets("Tabelle1") If objExcel.WorksheetFunction.CountA(.Cells) <> 0 Then lastRow = .Cells.Find(What:="*", _ After:=.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).row Else lastRow = 1 End If End With End Function 

End Function之前,你需要这样做:

 GetLastRow = lastRow 

否则该函数不会返回一个值。