【发布时间】:2015-07-10 13:38:45
【问题描述】:
我有一个关于在私有子(命令按钮)中使用私有函数的问题。
它不返回任何错误...也不做任何事情。当我按下 Word doc 中的命令按钮时,它应该形成行并从 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
【问题讨论】:
-
要让我们回答“为什么它不起作用”,您首先需要告诉我们它是如何不起作用的。发生了什么?
-
哪里出错了?你有没有逐行浏览代码,看看会发生什么?它在哪一行停止执行您期望它执行的操作?
-
我说它没有做任何事情(也没有返回任何错误),就好像我没有按下命令按钮一样。抱歉,如果不清楚。
-
@roryap 他们说它没有做任何事情。
-
请删除
On Error Resume Next。如果该命令在您的代码中,它不会显示任何错误