Foros del Web » Soporte técnico » Ofimática »

Modificar una macro de Excel

Estas en el tema de Modificar una macro de Excel en el foro de Ofimática en Foros del Web. Hola a todos: Tengo la siguiente macro de Excel en una hoja de trabajo: Sub ShowWeeks() Dim iToday As Variant Dim iYesterday As Variant Application.ScreenUpdating ...
  #1 (permalink)  
Antiguo 17/08/2008, 17:29
 
Fecha de Ingreso: agosto-2008
Mensajes: 4
Antigüedad: 15 años, 8 meses
Puntos: 0
Modificar una macro de Excel

Hola a todos:

Tengo la siguiente macro de Excel en una hoja de trabajo:



Sub ShowWeeks()
Dim iToday As Variant
Dim iYesterday As Variant
Application.ScreenUpdating = False

Range("B7").Select
iYesterday = Weekday(ActiveCell.Value)
Do Until IsEmpty(ActiveCell.Value)
ActiveCell.Offset(1, 0).Select
iToday = Weekday(ActiveCell.Value)
If iToday < iYesterday Then
ActiveCell.EntireRow.Insert
Selection.Font.Bold = True
With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveCell.FormulaR1C1 = "Sub Total"
ActiveCell.Offset(1, 0).Select

End If
iYesterday = iToday
Loop
Range("B7").End(xlDown).Select
Selection.Font.Bold = True
With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveCell.FormulaR1C1 = "Sub Total"
ActiveCell.Offset(1, 0).Select
Selection.Font.Bold = True
With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveCell.FormulaR1C1 = "Total General"
Range("A1").Select
End Sub

En la celda B7 tengo la fecha de inicio de mes (01/01/2008), la cual arrastro hasta el último dia (31/01/2008).

Cuando ejecuto dicha macro me produce un listado del mes en curso dividido en
semanas, pero las semanas comiensan en Domingo y yo quiero que comiencen en Lunes, alguien podria echarme una mano con esto.



Saludos.........
  #2 (permalink)  
Antiguo 17/08/2008, 20:05
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
Respuesta: Modificar una macro de Excel

Te sugiero que leas en la ayuda de VBA como se utiliza el segundo parámetro de la función:

= Weekday()

Saludos, Cacho.
  #3 (permalink)  
Antiguo 18/08/2008, 09:36
 
Fecha de Ingreso: agosto-2008
Mensajes: 4
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Modificar una macro de Excel

Gracias mrocf por tu respuesta, pude solucionar el inconveniente adicionando el parametro 2 a la función.

Tengo otra duda:

Se puede mediante un macro colocar de forma automática a fecha de inicio de mes, digamos 01/01/2008 en una celda de la hoja de trabajo activa al abrir el libro de trabajo correspondiente.

Es decir al abrir el libro se ejecuta una macro que me borra de B7 a B42 y coloca después en B7 la fecha 01 del mes en curso del año en curso. Lo de borrar las celdas lo puede hacer una macro en el libro con Autopen pero lo demás no he logrado resolverlo todavía.

De nuevo muchas gracias por tu ayuda anterior.
  #4 (permalink)  
Antiguo 18/08/2008, 09:46
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: Modificar una macro de Excel

Puedes usar Date(fecha actual) para eso. Por ejemplo:
Código PHP:
Range("A1") = "01/" Month(Date) & "/" Year(Date
En el ejemplo colocará en la celda A1 el primer día del mes actual.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 18/08/2008, 10:22
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
Respuesta: Modificar una macro de Excel

La alternativa a lo de David sería:

a) Que mantengas en la celda B7 la siguiente fórmula:
= FECHA( AÑO(HOY()); MES(HOY()); 1)

b) Que tu macro de apertura del libro en lugar de borrar el rango B7 a B42, solo borre B8 a B42.

Saludos, Cacho.
  #6 (permalink)  
Antiguo 18/08/2008, 14:33
 
Fecha de Ingreso: agosto-2008
Mensajes: 4
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Modificar una macro de Excel

Gracias por sus respuestas, solucioné el anterior problema con la fórmula propuesta por Mrocfpues no se porque razon la de David el Grandeme daba error, aunque estoy casi seguro que el del error soy yo.......

También encontre otra solución buscando en la ayuda de VBA......

ActiveSheet.Range("B7").Value = "=TODAY()-((DAY(TODAY()-1)))"

Ahora más trabajo......
Si me colóco en la celda B8 y entro la fórmula B7+1 no hay problema, me coloca el día posterior a B7, luego arrastro hasta el día que corresponda a fin de mes y listo tengo mi listado del mes.
Mi pregunta.....
Esto se puede hacer con un macro de forma automática que no sea el que coloqué al principio el cual corre bien la primera vez pero si lo corro sobre el listado generado da error. Además que tenga en cuenta los meses de 30 y de 31 días

De antemano muchas gracias por todas sus molestias.

Saludos Eleovildo

Última edición por Eleovildo; 18/08/2008 a las 14:36 Razón: Aclaración de pregunta
  #7 (permalink)  
Antiguo 18/08/2008, 20:06
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
De acuerdo Respuesta: Modificar una macro de Excel

Reemplaza la línea:
ActiveSheet.Range("B7").Value = "=TODAY()-((DAY(TODAY()-1)))"

por las siguientes:
Código:
With ActiveSheet.[B7:B37]
  .ClearContents: .Formula = Date - Day(Date) + 1
  .DataSeries Rowcol:=xlColumns, Type:=xlChronological, _
    Stop:=DateSerial(Year(Date), 1 + Month(Date), 0)
End With 
Saludos, Cacho.
  #8 (permalink)  
Antiguo 28/08/2008, 08:42
 
Fecha de Ingreso: agosto-2008
Mensajes: 1
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Modificar una macro de Excel

Alguien me puede ayudar, tengo una hoja de excel con un formato especifico de reporte, pero con celdas combinadas y tengo un botos para limpiar los datos de celdas predeterminadas, sin embargo algunas estan combinadas y no me las elimina. la macro que utiliso es la siguiente.

Sub pregun()
Dim pregun As Double
pregun = MsgBox("Estas seguro de borrar los datos", vbYesNo, "BORRAR")
If pregun = vbYes Then
Call borrar
Else
Exit Sub
End If
End Sub
Sub borrar()
Range("N15:N14:O13").ClearContents
End Sub

Private Sub CommandButton2_Click()
Dim pregun As Double
pregun = MsgBox("Estas seguro de borrar los datos", vbYesNo, "BORRAR")
If pregun = vbYes Then
Call borrar
Else
Exit Sub
End If
End Sub
  #9 (permalink)  
Antiguo 28/08/2008, 08:53
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Modificar una macro de Excel

Pues yo he probado con ese mismo código y elimina todos los contenidos de la celda.

P.S.: Cuando vas a escribir una pregunta, escribe en un nuevo tema, no uses otros temas que no tienen que ver con tu pregunta.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 28/08/2008, 13:14
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años
Puntos: 88
De acuerdo Respuesta: Modificar una macro de Excel

Tu pregunta no tiene nada que ver con el tema analizado en este "hilo".
Como bien te comentó David: ten la precaución de abrir un nuevo hilo para cada nueva consulta.

Por otra parte, la línea de código:

Range("N15:N14:O13").ClearContents

borra el contenido del rango N13:O15.

¿Es ése el rango que deseas borrar?
Saludos, Cacho.

Última edición por mrocf; 29/08/2008 a las 13:22
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:21.