Variables publicas.

Golbert
03 de Febrero del 2004
Hola.
Como hago para declarar una variable en un modulo para no necesitar declararlas en todos los forms y botones.
Por q lo q yo quiero hacer es q con un boton abra un archivo de excel, con otro boton escriba en ese archivo, y con otro boton q cierre el archivo guardando los cambios, y me dijieorn q esa es la unica forma. Por q sino cada vez q toque el boton dos q es para escribir m va a avovler a aabrir el archivo de excel y va a ser unn lio.
Me pueden ayuyar? hay alguna otra forma de hacer lo q digo?

palomo
03 de Febrero del 2004
pones en el modulo estandard en la zona de declaraciones:

Global glMiVariablePublica as Variant

Logico que en lugar de Variant podes poner el tipo de dato que necesites. Te recomiendo usar lo menos posible las variables globales y de hacerlo ponerle nombres bien identificables para evitar declarar una variable local con el mismo nombre y el consabido problema de superposicion de datos.


Golbert
03 de Febrero del 2004
NO puedo de esa forma me tira error. Yo pongo

Public Sub Main()

Global globjExcel As Object
Global objLibro As Object
Global strRuta As String

(...)
end sub

Y me tira uun error q dice: Atributo no valido en procedimiento o funcion.
Me pueden ayudar?

en?
03 de Febrero del 2004
las declaraciones dentro de un procedimiento es siempre 'Private'
Ponla en la sección de declaraciones de un módulo, fuera de toda función.

un saludo.

Golbert
03 de Febrero del 2004
Me podrian dar un ejemplo sino es mucha molestia.

en?
03 de Febrero del 2004
para probarlo, inserta un módulo en blanco, y pon:

Option Explicit

Public globjExcel As Object
Public objLibro As Object
Public strRuta As String
_________________________________


Public Sub Main()
'Las variables que declares aquí, sólo las prodrás utilizar aquí;

(...)

end sub 'cuando se ejecute esta instrucción, las variables de este procedimiento se destruyen.

Public ProcedimientoX()
(...)
strRuta = "c:Fichero.xls"
(...)
End Sub


De esta menera podrás leer o asignar valores a estas variables desde cualquier formulario o módulo.

que sepas que declarar una 'Global' es equivalente a 'Public', puedes hacerlo como prefieras.

Golbert
03 de Febrero del 2004
me sigeu sin slalir osea pongo eso en el boton para escribri pongo esto :


objLibro.Worksheets(1).Range("A5").Value = "chau"

(el libro ya esta abierto) y me tira error

en?
03 de Febrero del 2004
los datos que me das són insuficientes

¿cuál es el error que te devuelve ahora? ¿es el mismo?

¿dónde haces la asignación "Set objLibro = "?
si es en el Sub Main, ¿haces la llamada a la función antes que «objLibro.Worksheets(1).Range("A5").Value = "chau"»?

o te dice «Variable de objeto o bloque With no establecido»