Как поместить код VBA, содержащийся в модуле кода, в модуль листа - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть кнопка в «модуле кода», которая запускает запрос. Рядом с кнопкой находится ярлык, который показывает галочку сразу после завершения работы кнопки.

Код кнопки находится в коде модуля. Коды для ярлыка с галочкой указаны в рабочей книге и модуле листа.

Теперь, проблема в том, что когда я нажимаю кнопку, она работает отлично и делает то, что должна, но ярлык с галочкой не активируется. Причина может быть в том, что я не включил / не упомянул модуль книги / листа в моем модуле кода. Надеюсь на небольшую помощь.

enter image description here

Код в рабочей тетради Модуль:

Option Explicit
Private Sub Workbook_Open()
Call Tabelle1.prcResetLabels
End Sub

Код в листе модуля:

Option Explicit

Private Sub Schaltfläche2_Klicken()
Call prcSetLabel(probjLabel:=Label1)
End Sub

Private Sub prcSetLabel(ByRef probjLabel As MSForms.Label)
With probjLabel
.Caption = "P"
End With
End Sub

Friend Sub prcResetLabels()
Dim objOLEObject As OLEObject
For Each objOLEObject In OLEObjects
   With objOLEObject
        If .progID = "Forms.Label.1" Then _
           .Object.Caption = vbNullString
   End With
Next
End Sub

Код в Codemodul:

Public Sub Schaltfläche2_Klicken()
With Sheets("Table1")
  .Range("A1").End(xlUp).Offset(1, 0).Value = Environ("USERNAME")
End With
End Sub

1 Ответ

0 голосов
/ 06 сентября 2018

Ответ прост:

 Sub Schaltfläche2_Klicken()
 Call prcResetLabels
 With Sheets("Table1")
 .Range("A1").End(xlUp).Offset(1, 0).Value = Environ("USERNAME")
 End With
 Call prcSetLabel(probjLabel:=Table1.Label1)
 End Sub

 Private Sub prcSetLabel(ByVal probjLabel As Object)
 With probjLabel
 .Object.Caption = "P"
 End With
 End Sub
 Public Sub prcResetLabels()
 Dim objOLEObject As OLEObject

 For Each objOLEObject In Table1.OLEObjects
 With objOLEObject
     If .progID = "Forms.Label.1" Then _
        .Object.Caption = vbNullString
 End With
 Next
 End Sub
...