no reconoce una Variable Publica
Publicado por Carolina (5 intervenciones) el 10/05/2024 16:23:19
Hola buen dia a todos!! tengo una consulta: Tengo definida en mi proyecto una variable publica, en la seccion ThisWorkbook de esta manera:
Public varp As Integer
Luego en la misma seccion tengo definido el evento open, de esta manera:
Private Sub Workbook_Open()
Dim varchivo_datos As String
Dim vlibro_activo
vlibro_activo = ActiveWorkbook.Name
varchivo_datos = ActiveSheet.Range("AA1") & "\ABITADATOS.xlsm"
If Dir(varchivo_datos) <> "" Then
Workbooks.Open varchivo_datos
Else
MsgBox "ATENCION: NO EXISTE EL ARCHIVO QUE CONTIENE LOS VALORES PARA COTIZAR, EL SISTEMA NO VA A ARROJAR NINGUN VALOR, COMUMIQUESE CON QUIEN CORRESPONDA"
End If
varp = Workbooks("ABITADATOS.xlsm").Sheets("COSTOS_ABITA").Range("G7")
Workbooks(vlibro_activo).Activate
Sheets("PEDIDOS").Select
ActiveSheet.Range("N6").Value = Now
ActiveSheet.Range("B6").Select
End Sub
Luego en la seccion Modulos tengo definido el siguiente proceso:
Sub valorizar_roller(ancho_c, alto_c, fila_modif)
Dim sistema As String
Dim mecanismo As String
Dim tipo_tela As String
Dim tipo_mec As String
Dim nom_tela As String
Dim col_modif As String
Dim vn_mecanismo As String
Dim v_m2 As Double
Dim vmts_tela As Double
Dim valor_tela As Double
Dim valor_ml As Double
Dim costo_fijo As Double
Dim valor_coloc As Double
Dim valor_dolar As Double
v_m2 = ancho_c * alto_c
vmts_tela = v_ancho * (alto_c + 0.2)
tipo_mec = Range("AB" & fila_modif).Value
tipo_tela = Range("AA" & fila_modif).Value
nom_tela = Range("B" & fila_modif).Value
MsgBox "VALOR DE LA VARIABLE PUBLICA VARP = " & varp
If Not tela_cotizada(fila_modif) Then
MsgBox "ATENCION: LA TELA QUE ESTA INTENTANDO PRESUPUESTAR AUN NO TIENE VALOR EN LA LISTA DE PRECIOS, DEBE PONERLE PRECIO UNITARIO MANUALMENTE EN LA COLUMNA N"
Sheets("PEDIDOS").Range("O" & fila_modif).Value = 0
Exit Sub
End If
If Sheets("PEDIDOS").Range("F" & fila_modif) <> "" Then
vn_mecanismo = Sheets("PEDIDOS").Range("F" & fila_modif)
Else
vn_mecanismo = Establecer_mecanismo_cortina(fila_modif)
End If
If vn_mecanismo = "" Then
MsgBox "ATENCION: el ancho ó el alto ingresados son ERRONEOS no coinciden con ninguno de los mecanismos existentes, por favor verifique estos datos para poder cotizar la cortina"
Exit Sub
End If
If Left(Sheets("PEDIDOS").Range("A" & fila_modif).Value, 17) = "ROLLER MOTORIZADA" Then
If vn_mecanismo <> "50" Then
mecanismo = "CORTINA M38"
Else
mecanismo = "CORTINA M50"
End If
Else
mecanismo = "CORTINA A" & vn_mecanismo
End If
If mecanismo <> "" Then
If tipo_mec = "ML ECO" Then
valor_ml = Application.VLookup(mecanismo, Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("J3:P50"), 3, FALSO) * ancho_c
costo_fijo = Application.VLookup(mecanismo, Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("J3:P50"), 5, FALSO)
Else
valor_ml = Application.VLookup(mecanismo, Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("J3:P50"), 2, FALSO) * ancho_c
costo_fijo = Application.VLookup(mecanismo, Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("J3:P50"), 4, FALSO)
End If
End If
If nom_tela <> "" Then
If tipo_tela = "NORMAL" Then
valor_tela = Application.VLookup(nom_tela, Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("S3:U22"), 2, FALSO) * (ancho_c * (alto_c + 0.2))
Else
valor_tela = Application.VLookup(nom_tela, Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("S3:U22"), 3, FALSO) * (ancho_c * (alto_c + 0.2))
End If
Else
valor_tela = 0
End If
If Range("C" & fila_modif).Value = 1 Then
valor_coloc = Application.VLookup("COLOCACION 1", Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("J3:K50"), 2, FALSO)
Else
valor_coloc = Application.VLookup("COLOCACION X", Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("J3:K50"), 2, FALSO)
End If
If Sheets("PEDIDOS").Range("F" & fila_modif).Value = "" Then Sheets("PEDIDOS").Range("F" & fila_modif).Value = vn_mecanismo
valor_dolar = Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("I3").Value
Sheets("PEDIDOS").Range("O" & fila_modif).Value = (valor_ml + costo_fijo + valor_tela + valor_coloc) * valor_dolar
End Sub
Pero acá el msgbox para ver el valor de la variable publica, me dice que varp no tiene valor, no me reconoce el valor de la variable varp definida en la seccion workbook.
Yo necesito que el valor de esa variable esté visible en todos mis modulos (tengo mas procesos definidos en otros modulos).
Bueno muchas gracias si pueden ayudarme!!!! Porque no encuentro donde esta el error, o es que tengo que definir todos los procedimientos en la seccion workbooks? yo quiero saber donde definir la variable publica y que tenga alcance en todos los modulos! Gracias nuevamente !!! Soy nueva en excel
Public varp As Integer
Luego en la misma seccion tengo definido el evento open, de esta manera:
Private Sub Workbook_Open()
Dim varchivo_datos As String
Dim vlibro_activo
vlibro_activo = ActiveWorkbook.Name
varchivo_datos = ActiveSheet.Range("AA1") & "\ABITADATOS.xlsm"
If Dir(varchivo_datos) <> "" Then
Workbooks.Open varchivo_datos
Else
MsgBox "ATENCION: NO EXISTE EL ARCHIVO QUE CONTIENE LOS VALORES PARA COTIZAR, EL SISTEMA NO VA A ARROJAR NINGUN VALOR, COMUMIQUESE CON QUIEN CORRESPONDA"
End If
varp = Workbooks("ABITADATOS.xlsm").Sheets("COSTOS_ABITA").Range("G7")
Workbooks(vlibro_activo).Activate
Sheets("PEDIDOS").Select
ActiveSheet.Range("N6").Value = Now
ActiveSheet.Range("B6").Select
End Sub
Luego en la seccion Modulos tengo definido el siguiente proceso:
Sub valorizar_roller(ancho_c, alto_c, fila_modif)
Dim sistema As String
Dim mecanismo As String
Dim tipo_tela As String
Dim tipo_mec As String
Dim nom_tela As String
Dim col_modif As String
Dim vn_mecanismo As String
Dim v_m2 As Double
Dim vmts_tela As Double
Dim valor_tela As Double
Dim valor_ml As Double
Dim costo_fijo As Double
Dim valor_coloc As Double
Dim valor_dolar As Double
v_m2 = ancho_c * alto_c
vmts_tela = v_ancho * (alto_c + 0.2)
tipo_mec = Range("AB" & fila_modif).Value
tipo_tela = Range("AA" & fila_modif).Value
nom_tela = Range("B" & fila_modif).Value
MsgBox "VALOR DE LA VARIABLE PUBLICA VARP = " & varp
If Not tela_cotizada(fila_modif) Then
MsgBox "ATENCION: LA TELA QUE ESTA INTENTANDO PRESUPUESTAR AUN NO TIENE VALOR EN LA LISTA DE PRECIOS, DEBE PONERLE PRECIO UNITARIO MANUALMENTE EN LA COLUMNA N"
Sheets("PEDIDOS").Range("O" & fila_modif).Value = 0
Exit Sub
End If
If Sheets("PEDIDOS").Range("F" & fila_modif) <> "" Then
vn_mecanismo = Sheets("PEDIDOS").Range("F" & fila_modif)
Else
vn_mecanismo = Establecer_mecanismo_cortina(fila_modif)
End If
If vn_mecanismo = "" Then
MsgBox "ATENCION: el ancho ó el alto ingresados son ERRONEOS no coinciden con ninguno de los mecanismos existentes, por favor verifique estos datos para poder cotizar la cortina"
Exit Sub
End If
If Left(Sheets("PEDIDOS").Range("A" & fila_modif).Value, 17) = "ROLLER MOTORIZADA" Then
If vn_mecanismo <> "50" Then
mecanismo = "CORTINA M38"
Else
mecanismo = "CORTINA M50"
End If
Else
mecanismo = "CORTINA A" & vn_mecanismo
End If
If mecanismo <> "" Then
If tipo_mec = "ML ECO" Then
valor_ml = Application.VLookup(mecanismo, Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("J3:P50"), 3, FALSO) * ancho_c
costo_fijo = Application.VLookup(mecanismo, Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("J3:P50"), 5, FALSO)
Else
valor_ml = Application.VLookup(mecanismo, Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("J3:P50"), 2, FALSO) * ancho_c
costo_fijo = Application.VLookup(mecanismo, Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("J3:P50"), 4, FALSO)
End If
End If
If nom_tela <> "" Then
If tipo_tela = "NORMAL" Then
valor_tela = Application.VLookup(nom_tela, Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("S3:U22"), 2, FALSO) * (ancho_c * (alto_c + 0.2))
Else
valor_tela = Application.VLookup(nom_tela, Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("S3:U22"), 3, FALSO) * (ancho_c * (alto_c + 0.2))
End If
Else
valor_tela = 0
End If
If Range("C" & fila_modif).Value = 1 Then
valor_coloc = Application.VLookup("COLOCACION 1", Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("J3:K50"), 2, FALSO)
Else
valor_coloc = Application.VLookup("COLOCACION X", Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("J3:K50"), 2, FALSO)
End If
If Sheets("PEDIDOS").Range("F" & fila_modif).Value = "" Then Sheets("PEDIDOS").Range("F" & fila_modif).Value = vn_mecanismo
valor_dolar = Workbooks("ABITADATOS.xlsm").Sheets("PRECIOS").Range("I3").Value
Sheets("PEDIDOS").Range("O" & fila_modif).Value = (valor_ml + costo_fijo + valor_tela + valor_coloc) * valor_dolar
End Sub
Pero acá el msgbox para ver el valor de la variable publica, me dice que varp no tiene valor, no me reconoce el valor de la variable varp definida en la seccion workbook.
Yo necesito que el valor de esa variable esté visible en todos mis modulos (tengo mas procesos definidos en otros modulos).
Bueno muchas gracias si pueden ayudarme!!!! Porque no encuentro donde esta el error, o es que tengo que definir todos los procedimientos en la seccion workbooks? yo quiero saber donde definir la variable publica y que tenga alcance en todos los modulos! Gracias nuevamente !!! Soy nueva en excel
Valora esta pregunta


0