Sub userinit(str As String, addtime As Integer) Dim otherWorkbook As Workbook Dim otherWorksheet As Worksheet

' 打开另一个 Excel 文件
Set otherWorkbook = Workbooks.Open("E:\检测设备\力学\VBA测试\" & str)

' 选择要执行函数的工作表
Set otherWorksheet = otherWorkbook.Worksheets("首页")
otherWorksheet.Range("D14").Value = otherWorksheet.Range("J7").Value + addtime

' 在另一个文件中执行函数
Dim result As Variant
result = Application.Run('"' & otherWorkbook.Name & '"'! & otherWorksheet.CodeName & ".CommandButton2_Click")
' 这里的 'CommandButton2_Click' 是要执行的按钮函数名

' 关闭另一个 Excel 文件
otherWorkbook.Close False

' 处理返回值
MsgBox "Result: " & result

End Sub

优化说明:

  1. 删除了多余的另一个 Excel 文件的打开,因为在代码中只需要打开一个文件;
  2. 将选择要执行函数的工作表放在打开文件后面,避免未打开文件就选择工作表的错误;
  3. 简化了代码中的变量定义;
  4. 删除了无用的 otherWorkbook1 变量;
  5. 删除了未定义的 otherWorksheet 变量的赋值操作。
VBA代码优化:跨工作簿执行函数并获取返回值

原文地址: https://www.cveoy.top/t/topic/ovLO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录