[RESUELTO]Macro que no se realiza bien

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

[RESUELTO]Macro que no se realiza bien

Mensaje por pedrito76 »

Hola chicos,

Tengo una macro acabada, cuando llama a cada macro en su modulo indenpendiente la realiza bien, pero cuando la llamo desde un botón a todas ellas juntas no acaba de hacer bien las macros, a que puede ser debido?? :? :roll:

Os pongo dicha macro en cuestión.

Código: Seleccionar todo

Sub NuevoMes()
 Call CambiarFecha
 Call BorrarDatos
 Call Semana1
 Call Semana5
 Call Semana6
 Call OcultarHoja6 
End Sub
Sub CambiarFecha()
Dim oDoc As Object
Dim oOrigen As Object
Dim oDestino As Object
   'Este documento
   oDoc = ThisComponent
   'La hoja activa
   oDoc = ThisComponent.getSheets.getByName ("Rangos")
   'El rango origen
   oOrigen = oDoc.getCellRangeByName( "FechaSiguiente" )
   'La celda destino A15   
   oDestino = oDoc.getCellByPosition( 29,111 )
   'Copiamos el rango   
   oDoc.copyRange( oDestino.getCellAddress, oOrigen.getRangeAddress )        
   'IMPORTANTE: Todos estos métodos requieren que el origen y el destino tengan
   'EXACTAMENTE el mismo tamaño  
    oDestino = oDoc.getCellRangeByName( "Fechaactual" )
   oDestino.setData( oOrigen.getData )
End Sub
Sub BorrarDatos()
Dim oDoc As Object
Dim oRango1 As Object
Dim oRango2 As Object
Dim oRango3 As Object
Dim oRango4 As Object
Dim oRango5 As Object
Dim oRango6 As Object
   'Este documento
   oDoc = ThisComponent   
   'Hoja por nombre rango por nombre
   oRango1 = oDoc.getSheets.getByName("Semana 1").getCellRangeByName("C6:I50")
   oRango2 = oDoc.getSheets.getByName("Semana 2").getCellRangeByName("C6:I50")
   oRango3 = oDoc.getSheets.getByName("Semana 3").getCellRangeByName("C6:I50")
   oRango4 = oDoc.getSheets.getByName("Semana 4").getCellRangeByName("C6:I50")
   oRango5 = oDoc.getSheets.getByName("Semana 5").getCellRangeByName("C6:I50")
   oRango6 = oDoc.getSheets.getByName("Semana 6").getCellRangeByName("C6:I50")
   'Borramos todos los datos en cada rango
   oRango1.clearContents(1)
   oRango2.clearContents(1)
   oRango3.clearContents(1)
   oRango4.clearContents(1)
   oRango5.clearContents(1)
   oRango6.clearContents(1)  
End Sub
Sub Semana1()
Dim Hoja1 As Object
Dim Contador As Integer
   Hoja1 = ThisComponent.getSheets.getByName("Semana 1")     
   For Contador = 2 To 7
      If Hoja1.getCellByPosition(Contador,4).getValue = 0 Then
         Hoja1.getCellByPosition(Contador,4).getColumns.IsVisible = False
      End If
   Next  Contador    
End Sub
Sub Semana5()
Dim Hoja5 As Object
Dim Contador As Integer  
   Hoja5 = ThisComponent.getSheets.getByName("Semana 5")  
   For Contador = 3 To 8
      If Hoja5.getCellByPosition(Contador,4).getValue = 0 Then
         Hoja5.getCellByPosition(Contador,4).getColumns.IsVisible = False
      End If
   Next  Contador    
End Sub
Sub OcultarHoja6()
Dim Hoja6 As Object
Dim HojaRangos As Object
Dim oDoc As Object  
   Hoja6 = ThisComponent.getSheets.getByName("Semana 6")   
  If Hoja6.getCellRangeByName("C5").getValue() > 0 Then 
Hoja6 = ThisComponent.getSheets().getByIndex(6)
Hoja6.isVisible = Not Hoja6.isVisible
Else
End If
End Sub
Sub Semana6()
Dim HojaRangos As Object
Dim Hoja6 As Object
Dim sCol As String
   'Capitulo 6.1
   HojaRangos = ThisComponent.getSheets.getByName("Rangos")
   Hoja6 = ThisComponent.getSheets.getByName("Semana 6")
   'If HojaRangos.Range("$AI$21") > 0 Then   
   'Capitulo 6.2 y 6.4.1
   If HojaRangos.getCellRangeByName("$R$21").getValue() > 0 Then
      'If Hoja6.Range("C5") > 0 Then
      If Hoja6.getCellRangeByName("D5").getValue() > 0 Then
         'Columns("D:H").Select
         sCol = "E1:I1"
      Else
         sCol = "D1:I1"
         'Columns("C:H").Select         
      End If
      'Selection.EntireColumn.Hidden = True
      'Capitulo 6.5.2
      Hoja6.getCellRangeByName( sCol ).getColumns.IsVisible = False
      'Range("B6").Select
   Else
      'If Hoja6.Visible = xlSheetHidden Then
      'Capitulo 6.1.6
      If Not Hoja6.isVisible Then
         'Hoja6.Visible = xlSheetVisible
         Hoja6.isVisible = True
      End If                
      'Hoja6.Visible = xlSheetHidden
      Hoja6.isVisible = False
   End If
End Sub
Porque cuando llamo a todas me sucede que no oculta bien las columnas :( :crazy:
Última edición por pedrito76 el Jue Ago 05, 2010 11:35 am, editado 1 vez en total.
OpenOffice.org 3.2
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro que no se realiza bien

Mensaje por mauricio »

Hola...

¿No te da ningún error?, tal vez tenga que ver el orden en que las llamas...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

Re: Macro que no se realiza bien

Mensaje por pedrito76 »

No, la verdad que error no me da, pero si que no realiza bien siempre lo que necesito

la verdad que estoy perdido :?
OpenOffice.org 3.2
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro que no se realiza bien

Mensaje por mauricio »

Hola...

Ejecútala paso a paso para ver como progresa, para saber como ejecutar paso a paso checa el capitulo 4.13 de mi libro.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

Re: Macro que no se realiza bien

Mensaje por pedrito76 »

Hola mauricio,

yo no tengo ese capitulo, acaba en el 4.12 :shock: :roll:
OpenOffice.org 3.2
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Macro que no se realiza bien

Mensaje por mauricio »

Hola...

No se de donde lo descargaste, pero aquí esta ya terminado hasta el capitulo 10: http://www.correolibre.net/archivos/

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

Re: Macro que no se realiza bien

Mensaje por pedrito76 »

Gracias :super: :bravo:
OpenOffice.org 3.2
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

Re: Macro que no se realiza bien

Mensaje por pedrito76 »

Lo he comprobado y lo hace bien, pero sigo sin saber porque cuando me oculta unas columnas realizando las macros de la semana1 y semana5 luego cuando tiene que volver a mostrar unas columnas con fechas correctas no lo hace :(


PERDONAR PERO YA LO HE CONSEGUIDO, GRACIAS A SE CABEZOTA Y A QUE NUESTRO COMPAÑERO MAURICIO SIEMPRE NOS DICE QUE HAY QUE PROBAR Y PROBAR.

GRACIAS :super:
OpenOffice.org 3.2
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: [RESUELTO]Macro que no se realiza bien

Mensaje por mauricio »

Hola...

¿y cual era el problema?, es muy útil comentar la solución al problema por si a otros compañeros les pasa lo mismo.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
pedrito76
Mensajes: 78
Registrado: Jue Jul 08, 2010 3:02 pm

Re: [RESUELTO]Macro que no se realiza bien

Mensaje por pedrito76 »

Tienes razón,

pues aunque era una cosa muy obvia y que incluso me da vergüenza comentarla pues os cuento, os pongo como lo tenía y luego la solución que le he dado, no se si se hará así pero a mi me funciona.

Esto es como estaba

Código: Seleccionar todo

Sub Semana1()
Dim Hoja1 As Object
Dim Contador As Integer
   Hoja1 = ThisComponent.getSheets.getByName("Semana 1")     
   For Contador = 2 To 7
      If Hoja1.getCellByPosition(Contador,4).getValue = 0 Then
         Hoja1.getCellByPosition(Contador,4).getColumns.IsVisible = False
      End If
   Next  Contador    
End Sub
Y ahora con la corrección:

Código: Seleccionar todo

Sub Semana1()
Dim Hoja1 As Object
Dim Contador As Integer

   Hoja1 = ThisComponent.getSheets.getByName("Semana 1")  
   
    
   For Contador = 2 To 7
      If Hoja1.getCellByPosition(Contador,4).getValue = 0 Then
         Hoja1.getCellByPosition(Contador,4).getColumns.IsVisible = False
      Else
       If Not Hoja1.getCellByPosition(Contador,4).getColumns.IsVisible Then
          Hoja1.getCellByPosition(Contador,4).getColumns.IsVisible = True
      End If
      End If
   Next  Contador 
   
End Sub
Me faltaba el hecho de que aparecieran de nuevo las columnas con fechas que correspondían a fechas actuales cada vez que cambiaba de mes, no se si me he explicado :?

Bueno espero que a alguien le sirva

Saludos.
OpenOffice.org 3.2
Responder