将代码转换为附加代码时遇到的问题,我的参考资料存在潜在的问题

时间:2019-08-08 12:30:07

标签: excel vba

我正在尝试采用我编写的大型程序,并将所有源代码放入excel插件中,以便我可以在一个位置编辑代码并让每个人的程序都可以引用它。我的主要工作簿中有一堆前端工作表,然后添加了名为LaborTrackAddIn的插件。提交用户表单时,显示的一组子功能和功能会根据用户选择创建并保存PDF报告

我尝试用各种已知的方式对引用进行限定,尽管我的许多代码都在工作,但是有些相当大的代码却没有,而且我不确定为什么。我在下面添加了将无法运行的3个相关功能的进展。谁能帮我解决这个问题?我还在寻找有关制作插件和以正确方式构建结构的任何指示。另外,我底部的count列功能说无法限定ws对象引用

Private Sub FRok_Click()
  Dim ws As Worksheet
   Set ws = ActiveWorkbook.Worksheets("REPORTS")
   ws.Visible = True
    ws.OLEObjects("repProj").Object.Text = reportsModule.jobNameNum
    ws.OLEObjects("repPM").Object.Text = reportsModule.pmName
  With Me
 If OptionButton1.Value = True Then
     Call reportsModule.dangerCodes                                                     ''run danger report
   ElseIf OptionButton2.Value = True Then             ''run active this week
     Call reportsModule.getActiveCodes
   ElseIf OptionButton5.Value = True Then     ''inactive
      Call reportsModule.getInactiveCodes
   ElseIf OptionButton7.Value = True Then         ''all codes for which work has started
      Call reportsModule.getAllActiveCodes
   End If
  End With

   MsgBox "One moment please your report is being generated", vbOKOnly
Application.Wait (Now + TimeValue("0:00:01"))
   Call reportsModule.sheetTOpdf(ws)


  ws.Rows("4:" & (Module1.countRows(ws) + 5)).ClearContents

 ws.Visible = xlSheetVeryHidden
   filteredProgressReport.Hide
End Sub

Public Sub getInactiveCodes()
 Dim tRows
 Dim i As Integer, nxtRow As Integer
 Dim ws As Worksheet, rpts As Worksheet
 Set ws = ActiveWorkbook.Worksheets("Sheet1")
 Set rpts = ActiveWorkbook.Worksheets("REPORTS")
   ws.Visible = True
  rpts.Visible = True
  Application.ScreenUpdating = False

 For i = 1 To ws.Range("mainTable").Rows.Count
    nxtRow = Module1.countRows(rpts) + 1
    If ws.ListObjects("mainTable").DataBodyRange(i, 11).Value < 1 _
    Or ws.ListObjects("mainTable").DataBodyRange(i, 12).Value < 1 Then
           ws.ListObjects("mainTable").ListRows(i).Range.Copy
           rpts.Range("A" & nxtRow, "U" & nxtRow).PasteSpecial 
Paste:=xlPasteValues
    End If
 Next i
 Call reportsModule.addTotalsRow

 Application.ScreenUpdating = True
End Sub

Public Function countColumns(ws As Worksheet, rRow As Integer) As Integer
  ws.Range("A" & rRow).Select
  Selection.End(xlToRight).Select
  countColumns = Selection.Column
End Function

我希望弄清楚我编写的代码中的哪些内容需要更改,以使它们都可以从外接程序中运行。欢迎任何链接或建议。谢谢您的时间

0 个答案:

没有答案