我有一个关于在私有子(命令按钮)中使用私有函数的问题。使用子功能(使用Word和Excel的VBA)
它不会返回任何错误...也不会做任何事情。当我按下Word文档中的命令按钮时,它应该形成行并从Excel工作表中导入数据,直到Excel中的最后一行,这就是我试图让函数执行的操作 - 查找最后一行工作表。
如果你可以看看我的代码,并让我知道如果你知道为什么它不会工作,我会很感激。我需要在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
对于我们来说,“为什么它不起作用”,您首先需要告诉我们*它是如何工作的*。发生了什么? –
它在哪里出错?你有没有逐行浏览代码,看看会发生什么?在什么方面停止做你期望的事情? –
我说它没有做任何事情(也没有返回任何错误),就好像我没有按下命令按钮。对不起,如果不明确。 – idk123