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

Caso concreto con funciones y/o macros en Excel

Estas en el tema de Caso concreto con funciones y/o macros en Excel en el foro de Ofimática en Foros del Web. ¡Hola a todo el mundo! He observado el foro y os felicito por lo bien que lo lleváis. Este es mi primer mensaje, así que ...
  #1 (permalink)  
Antiguo 31/07/2008, 18:39
 
Fecha de Ingreso: julio-2008
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Caso concreto con funciones y/o macros en Excel

¡Hola a todo el mundo! He observado el foro y os felicito por lo bien que lo lleváis.

Este es mi primer mensaje, así que espero haber comprendido bien todas las normas, y me disculpo por adelantado si he infringido alguna.



Mi duda es la siguiente:

Tengo un archivo de excel con varias hojas y me gustaria que desde una celda de validación desplegable se pudieran activar varias acciones.
La acción que me ocupa consiste en copiar la fila donde está dicha celda y pegarla en la siguiente hoja en la primera fila libre que hubiera entre unas filas asignadas, cambiando a su vez el formato de la fila tanto en la hoja de origen como en la hoja de destino.
Puestos a pedir, me gustaría que el proceso se deshiciera al escoger otra opción en la celda de validación, y se ejecutara la nueva acción escogida.

El código que había probado hasta ahora es el siguiente, aunque quizá me recomendéis el uso de funciones o una combinación de las 2:

Sub Macro3()
'
' Macro3 Macro
' Macro grabada el 01/08/2008 por Comp
'
' Acceso directo: CTRL+w
'
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$12" Then
If Target.Value = "aplazado" Then
Run "Macro3"
End If
End If

Range("A12:E12").Select
Selection.Copy
Sheets("Hoja1").Select
Range("H1:L1").Select
ActiveSheet.Paste
Selection.Interior.ColorIndex = xlNone
Selection.Font.ColorIndex = 0

End Sub



Gracias por adelantado.
  #2 (permalink)  
Antiguo 31/07/2008, 23:19
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
Respuesta: Caso concreto con funciones y/o macros en Excel

Hola! ThomasBlake.
Prueba con lo siguiente y advierte -si las hubiere- las diferencias con tu código.
(Sugerencia: la 1a. instrucción representa una diferencia importantísima... ¿adviertes por qué?)

Código:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address <> "$E$12" Then Exit Sub
  If Target.Value = "aplazado" Then Run "Macro3"
With [A12:E12]
  Application.EnableEvents = False
  .Interior.ColorIndex = xlNone
  .Font.ColorIndex = 0
  .Copy Sheets("Hoja1").[H65536].End(xlUp).Offset(1, 0)
  Application.EnableEvents = True
End With
End Sub

Saludos, Cacho.
  #3 (permalink)  
Antiguo 01/08/2008, 02:44
 
Fecha de Ingreso: julio-2008
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Caso concreto con funciones y/o macros en Excel

Pues no me funciona...

He puesto el código este:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$E$12" Then Exit Sub
If Target.Value = "aplazado" Then Run "Macro3"
With [A12:E12]
Application.EnableEvents = False
.Interior.ColorIndex = xlNone
.Font.ColorIndex = 0
.Copy Sheets("Hoja1").[H65536].End(xlUp).Offset(1, 0)
Application.EnableEvents = True
End With
End Sub


Supongo que eso es el código completo que ha de aparecer no?
Por tanto habría que borrar esto:

Sub Macro3()
'
' Macro3 Macro
' Macro grabada el 01/08/2008 por Comp
'
' Acceso directo: CTRL+w
'


Pero entonces empieza con "Private Sub..."? No empieza con el nombre de la macro?

Esta parte para qué sirve?: Application.EnableEvents = False

Y en esta parte: .Copy Sheets("Hoja1").[H65536].End(xlUp).Offset(1, 0)

Hoja 1 es la hoja de origen, no? Y la destino? Es H65536? Y el Offset es para correr una fila hacia abajo? Con eso ya me ordenará todo en la 2a hoja?


Gracias por vuestro tiempo
  #4 (permalink)  
Antiguo 01/08/2008, 05:26
Avatar de mrocf  
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
Caso concreto con funciones y/o macros en Excel

¡ Qué problema !!!
Tu frase: "- ... El código que había probado hasta ahora es el siguiente... " me dio la impresión que contabas con un conocimiento básico del tema VBA.

De modo que -y como es habitual en este Foro- intenté darte un par de herramientas y conocimientos adicionales a fin que completaras tu proyecto.

Sin embargo, a la luz de tus nuevas consultas:
  • "- ... Pero entonces empieza con "Private Sub..."? No empieza con el nombre de la macro?..."
  • "- ... Esta parte para qué sirve?: Application.EnableEvents = False ..."
  • "- ... Y en esta parte: .Copy Sheets("Hoja1").[H65536].End(xlUp).Offset(1, 0)..."

das a entender -claramente- que aún no cuentas con esos conocimientos básicos.

La mejor sugerencia que te puedo dar -en este punto- es que antes de ponerte a correr: aprendas a caminar. Es decir:
a) Activa tu grabadora de macros y realiza algunas cosas sencillas (como copiar, pegar y seleccionar celdas) y estudia el código así generado.

b) A medida que vaya siendo "amigable" para tí el lenguaje de las macros y la ayuda del propio VBA, intenta avanzar sobre los códigos que te he dejado.

c) Y accede nuevamente a los Foros de consulta para ser orientado en cuestiones conceptuales importantes... y no básicas.

Saludos.
  #5 (permalink)  
Antiguo 05/08/2008, 03:07
 
Fecha de Ingreso: julio-2008
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Caso concreto con funciones y/o macros en Excel

De acuerdo. Investigaré más por mi cuenta. ¡Gracias por tu tiempo!
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 00:35.