Kako zagnati več makrov iz menija z desnim klikom v Excelu?
Če je v vašem delovnem zvezku več makrov vba, odprite okno VBA in nato izberite makro, ko morate zagnati kodo. V tem članku bi rad spregovoril o tem, kako zagnati makre iz menija z desnim klikom, da bi bilo vaše delo učinkovitejše, kot je prikazano na levi sliki zaslona.
Zaženite več makrov v meniju z desnim klikom s kodami VBA
Če želite zagnati kode makrov v delovnem zvezku iz menija z desnim klikom, vam bodo morda v pomoč naslednji koraki:
1. Odprtina Alt + F11 tipke za odpiranje Microsoft Visual Basic za aplikacije okno.
2. Nato dvokliknite Ta delovni zvezek na levi Projekt in nato kopirajte in prilepite spodnjo kodo VBA v prazen modul.
Private Sub Workbook_Open()
Run "LoadMacro"
End Sub
Private Sub Workbook_Activate()
Run "LoadMacro"
End Sub
Private Sub Workbook_Deactivate()
Run "ClearMacro"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Run "ClearMacro"
ThisWorkbook.Save
End Sub
3. Še vedno v Microsoft Visual Basic za aplikacije okno, kliknite Vstavi > Moduliin v ta modul prilepite naslednjo kodo.
Private Sub LoadMacro()
Dim xArrMenu As Variant
Dim xStrLine, xSreBtnName As String
Dim xObjCBCF, xObjCntrAll As CommandBarControl
Dim xObjCBCs As CommandBars
Dim xObjCBBtn As CommandBarButton
Dim xIntLine, xFNum As Integer
Dim xObjComponent As Object
Run "ClearMacro"
Set xObjCBCF = Application.CommandBars("Cell").Controls.Add(msoControlPopup, before:=1)
xObjCBCF.Caption = " Run Macro "
xObjCBCF.BeginGroup = False
For Each xObjComponent In ActiveWorkbook.VBProject.VBComponents
If xObjComponent.Type = 1 Then
For xIntLine = 1 To xObjComponent.CodeModule.CountOfLines
xStrLine = xObjComponent.CodeModule.Lines(xIntLine, 1)
xStrLine = Trim(xStrLine)
If (InStr(xStrLine, "()") > 0) And (Left(xStrLine, 11) = "Private Sub" Or Left(xStrLine, 3) = "Sub") Then
xSreBtnName = ""
If "Private Sub" = Left(xStrLine, 11) Then
xSreBtnName = Trim(Mid(xStrLine, 12, InStr(xStrLine, "()") - 12))
ElseIf "Sub" = Left(xStrLine, 3) Then
xSreBtnName = Trim(Mid(xStrLine, 4, InStr(xStrLine, "()") - 4))
End If
If xSreBtnName <> "" And xSreBtnName <> "RightClickReset" And xSreBtnName <> "LoadMacro" And xSreBtnName <> "ActionMacro" Then
Set xObjCBBtn = xObjCBCF.Controls.Add
With xObjCBBtn
.FaceId = 186
.Style = msoButtonIconAndCaption
.Caption = xSreBtnName
.OnAction = "ActionMacro"
End With
End If
End If
Next xIntLine
End If
Next xObjComponent
End Sub
Private Sub ClearMacro()
On Error Resume Next
CommandBars("Cell").Controls(" Run Macro ").Delete
Err.Clear
CommandBars("Cell").Reset
End Sub
Private Sub ActionMacro()
On Error GoTo Err1
With Application
Run .CommandBars("Cell").Controls(1).Controls(.Caller(1)).Caption
End With
Exit Sub
Err1:
MsgBox "Invalid"
End Sub
4. Po lepljenju kod kliknite in kliknite Orodja > ReferenceIn Reference-VBAProject Prikaže se pogovorno okno in nato preverite Microsoft Visual Basic za razširljivost aplikacij 5.3 možnost v Razpoložljive reference seznam, glej posnetek zaslona:
5. Nato kliknite OK če želite zapreti pogovorno okno, shranite ta delovni zvezek kot Excelov delovni zvezek z omogočeno makro format, glej posnetek zaslona:
6. Končno znova zaženite delovni zvezek, da začne učinkovati kode, in zdaj, ko z desno miškino tipko kliknete celico, a Zaženite makro možnost se vstavi v meni z desnim klikom in vsi makri v vaši delovni zvezki so v podmeniju navedeni kot naslednji posnetek zaslona:
7. Nato lahko zaženete kodo, tako da jo kliknete.