Notifications
Clear all

Dúvida sobre Private

2 Posts
1 Usuários
0 Reactions
868 Visualizações
(@gilbertjrs)
Posts: 77
Trusted Member
Topic starter
 

Pessoal, bom dia.

Desenvolvi uma planilha, separei em módulos, cada um agrupando funcionalidades por características similares.
A questão é a seguinte: Não quero que o usuário possa acessar as Subs e Functions, pensei em colocar como Private porém, quero que macros (Subs) internas possam acessar.

Códigos de exemplo ilustrativo abaixo:

Código acessado pelo usuário

Option Explicit

Sub Acesso()
    Call Rotina
End Sub

Código interno

Option Explicit

Private Sub Rotina()
    MsgBox "acessou"
End Sub

A chamada Call aprecenta erro, como posso resolver?

 
Postado : 18/08/2017 7:40 am
(@gilbertjrs)
Posts: 77
Trusted Member
Topic starter
 

Pessoal, já encontrei a solução no site http://wellsr.com/vba/2015/excel/3-ways-to-call-a-private-sub-from-another-module/

Seguem os códigos de exemplo que criei baseado na explicação deste site, por módulo

Module1

Option Explicit

Private Sub PrivateCallDemo1()
    Application.Run "Module2.HelloWorld1"
End Sub

Private Sub PrivateCallDemo2()
    Call Module3.HelloWorld2
End Sub

Private Sub PrivateCallDemo3()
    Call Module4.HelloWorld3
End Sub

Module2

Option Explicit

Private Sub HelloWorld1()
    MsgBox "Hello World 1", , "wellsr.com"
End Sub

Module3

Option Explicit
Option Private Module

Public Sub HelloWorld2()
    MsgBox "Hello World 2", , "wellsr.com "
End Sub

Module4

Option Explicit

Public Sub HelloWorld3(Optional byDummy As Byte)
'Module 1
    MsgBox "Hello World 3", , "wellsr.com "
End Sub

Alguém sabe dizer as vantagens e desvantagens de cada um destes métodos Application.Run, Option Private Module e (Optional byDummy As Byte) ?

 
Postado : 18/08/2017 8:23 am