Excel - variables globales

   
Vista:

variables globales

Publicado por Alexis (2 intervenciones) el 10/07/2009 15:09:05
Hola a todos... necesito ayuda por favor, Lo que pasa es que estoy programando dos botones en excel y quiero que una variable que la declare como global mantenga el valor en ambos procedimientos, pero no me resulta!!! (debo aclarar que estoy empezando en esto de la programación), aqui va el código.

Dim ruta As String
Dim destino As String

Private Sub crear_carpeta_Click()
Dim nombre As String
ruta = "C:Documents and SettingsClaudia RiosEscritoriocobranza"
On Error GoTo error
inicio:
nombre = InputBox("Ingrese el nombre de la carpeta que desea crear:", "Nombre de la Carpeta")
If nombre = "" Then
mensaje = MsgBox("No se creo ninguna carpeta", vbOKOnly + vbCritical, "Información")
Else
Set carpeta = CreateObject("Scripting.FileSystemObject")
carpeta.createfolder ("C:Documents and SettingsClaudia RiosEscritoriocobranza" & nombre)
mensaje = MsgBox("Carpeta creada satisfactoriamente", vbOKOnly + vbInformation, "Información")
msje = MsgBox("¿Desea guardar los doctos. en esta carpeta?", vbYesNo + vbQuestion, "Carpeta destino")
If msje = vbYes Then
destino = ruta + "" + nombre
Else
destino = ruta
End If

End If
error:
If Err.Number = 58 Then
mensaje = MsgBox("El nombre de la carpeta ya existe. Debe ingresar un nombre distinto.", vbOKOnly + vbCritical, "Información")
Resume inicio
End If

End Sub

bueno en pocas palabras, lo que hace el codigo es crear una carpeta (lo cual lo hace bien), la variable "ruta" es la que tiene la dirección en donde créo la carpeta , declaré fuera del procedimiento la variable "ruta" y "destino"(y esta ultima es la que necesito que cambie, pero que guarde ese cambio y que no se pierda al cerrar y abrir el archivo), cuando lo hago por primera vez me resulta pero cuando cierra y abre de nuevo no guarda los cambios en la variable "destino". Aqui va el segundo código.

Private Sub IMPRIMIR_Click()
Dim docto As String
If Range("C4").Value = Empty Then
ActiveSheet.PrintOut
Else
On Error GoTo nombre_vacio
docto = Range("c4")
ActiveWorkbook.SaveAs Filename:=destino + "" + docto + ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
Application.Dialogs(xlDialogPrint).Show
Workbooks.Open Filename:="C:Documents and SettingsClaudia RiosEscritoriocobranza00000000.xls"
Workbooks(docto + ".xls").Close SaveChanges:=False
Exit Sub
End If
nombre_vacio:
If Err.Number = 1004 Then
'MsgBox ("Número de Error : " & Err.Number & Chr(13) & "Descripción : " & Err.Description)
ActiveSheet.PrintOut
'Else
'MsgBox ("Error no previsto. Comuniquese con el responsable facilitando la " & _
'"sgte. información " & Chr(13) & "Número de Error : " & _
'Err.Number & Chr(13) & "Descripción : " & Err.Description)

End If
End Sub

bueno y este es el que guarda con un nuevo nombre el archivo, imprime, abre mi archivo "ejemplo" (que se llama 000000000.xls y que es el que tiene los codigos, sobre este archivo trabajo) y por último cierra el archivo modificado. Como ven hace 4 pasos (guarda, imprime, abre y cierra). La variable "docto" es la que contiene el nombre del archivo a guardar. En la linea donde guarda el documento en la nueva dirección es donde tengo el problema ya que funciona una vez pera al momento de cerrarce la variable "destino" no mantiene la modificación.
Por favor Ayuda!!!!. Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:variables globales

Publicado por Abraham Valencia (2418 intervenciones) el 10/07/2009 16:56:48
Por lo que veo estas trabajando en un modulo de hoja o modulo del Userform, y en esos no se declaran ese tipo de variables. Debes declararla en modulo "normal" y como publica (Public)

Public destino As String

OJO, sera publica, por eso no importa que el procedimiento este en otro modulo

Abraham
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:variables globales

Publicado por Alexis (2 intervenciones) el 10/07/2009 17:28:59
Tenías razon, muchas gracias abraham.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar