• Lunes 29 de Abril de 2024, 06:51

Autor Tema:  Macros Mareantes En Excel  (Leído 4852 veces)

mikelvba1

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Macros Mareantes En Excel
« en: Miércoles 12 de Septiembre de 2007, 09:49 »
0
Hola a todos, a ver si me podeis ayudar.

Con mis cutres-macros que me monto en excel tengo un problema.
Hace lo que le digo pero me gustaria que lo hiciera sin moverse por todas las celdas a toda velocidad como si lo estuviera haciendo superman.

Sabeis si hay alguna forma que actualice las celdas sin que se vea el proceso que realiza en pantalla?

Es algo relacionado con active en vez de select? (cambio active por select y no me va igual)

Gracias!!!!
 :)

Ivanart

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Macros Mareantes En Excel
« Respuesta #1 en: Viernes 14 de Septiembre de 2007, 03:11 »
0
hola Mikel,

un par de posibilidades:

a) por un lado puedes incluir, al principio de la macro esta instruccion=>

Application.ScreenUpdating = False

para detener la actualizacion de pantalla. Esto seguramente evitara el bile 'visual', pero...

B) para evitar el 'baile real' (aunque no lo veas gracias a application.screenupdating el baile sigue ahi), decirte que en el ¿¿99%?? de los casos no es necesario andar seleccionando
ni activando celdas,rangos, hojas, libros ni objetos en general para trabajar con ellos.

basta hacer referencia a ellos.

pej. para poner en negrita la fuente de la celda A1 de la hoja1, la tendencia seleccionando y/o activando seria algo asi:

with worksheets("Hoja1")
    .Activate
    .Range("a1").Select
    .Selection.Font.Bold = True
end with

pero [en mi opinion] esto otro hace lo mismo de una manera mucho mas rapida (aqui no se notaria apenas, pero si fueran muchas celdas....), clara y eficaz:

worksheets("Hoja1").Range("a1").Font.Bold = True

como te digo es aplicable en casi todas las situaciones y al no seleccionar/activar nada, adems corres menos riesgos de recalculos innecesarios, pej.

espero te ayude, y si quieres comentas

un saludo
Ivan

mikelvba1

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Macros Mareantes En Excel
« Respuesta #2 en: Lunes 17 de Septiembre de 2007, 15:21 »
0
Gracias Ivanart, la verdad es que te agradezco muchisimo tus respuestas.
El problema es que haciendo eso me funciona pero en cuanto le meto una celda variable me da error.

Me explico, con lo siguiente me lo coge bien:

Range("a2").Select

Pero si estoy en algun rango que varia con un puntero o algo, por ej las variables fila y columna, no se como ponerlo. Me da error con todas estas pruebas:


Range("fila,columna").Select
Range(fila,columna).Select
Range(Cells (fila,columna)).Select



No se como hacerlo, me esta volviedo loco!! :blink:
A ver si Ivanart o alguien con conocimientos puede ayudarme.

Gracias a todos

Ivanart

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: Macros Mareantes En Excel
« Respuesta #3 en: Lunes 17 de Septiembre de 2007, 17:42 »
0
hola Mikel,

no acabo de entender lo que quieres hacer [quizas convendria que expusieras el codigo (o al menos parte) que estes usando y que es lo que realmente quieres hacer.

de todas formas te comento algunas cosas por si te ayudan:

1º) que quieres hacer exactamente con esto:

Citar
Range("fila,columna").Select
Range(fila,columna).Select
Range(Cells (fila,columna)).Select

de donde se deberian tomar los valores de fila y columna??

aparte de este dato,

.->en el 1er uso que Haces (Range("fila,columna").Select)

en realidad le estarias pasando un nombre de rango (al ir entre comillas, y aunque no estoy seguro, posiblemente no admitido por el uso de una coma en el)

el uso de fila,columna tendria sentido tal y como lo planteas en el 2º y 3er uso, es decir como variables, pero para que excel no te genere un error , previamente deberas haberle asignado un valor a esas variables [ que ademas este dentro de los limites admitidos por excel <pej. minimo 1 y, hasta el 2003, 256 para columnas y 65536 para filas>]

si quieres haz esta [muy sencilla] prueba:

en un libro nuevo, abre el editor de vba (Alt+F11), ve al menu insertar => Modulo (a secas) => en la ventana que se te abre copia/pega el codigo que te pongo a continuacion => vuelve a excel (Alt+F11 o cerrando el editor, pej.) => desde el cuadro de dilogo 'Macros' (Alt+F8 o menu herramientas -> macros -> ver macros) selecciona el nombre de la macro(PruebasFilaColumna) y ejecuta, observa el resultado y contrastalo con el codigo. Con las dudas comentas.

Código: Text
  1.  
  2. Sub PruebasFilaColumna()
  3.   Dim Fila As Long, Columna As Byte
  4.   With Worksheets(&#34;Hoja1&#34;)
  5.     .Activate
  6.     .Range(&#34;a:l&#34;).Clear
  7.     For Fila = 1 To 10
  8.       For Columna = 1 To 10
  9.         .Cells(Fila, Columna) = .Cells(Fila, Columna).Address(0, 0)
  10.       Next
  11.     Next
  12.     .Range(&#34;a&#34; & Fila).Interior.Color = vbRed
  13.     .Cells(1, Columna).Interior.Color = vbYellow
  14.     .Cells(Fila, Columna).Interior.Color = vbGreen
  15.     .Range(.Cells(Fila + 2, 1), .Cells(Fila + 2, Columna)).Interior.Color = vbBlue
  16.     With .Cells(Fila - 1, Columna - 1)
  17.       With .Font
  18.         .Color = vbRed
  19.         .Bold = True
  20.         .Size = 14
  21.       End With
  22.       .Select
  23.     End With
  24.   End With
  25.   With ActiveCell
  26.     MsgBox &#34;La celda seleccionada actualmente es &#34; & .Address(0, 0) & &#34;,&#34; & vbCr & _
  27.           &#34;su nº de fila es &#34; & .Row & &#34; y el de la columna es el &#34; & .Column & &#34;.&#34;
  28.   End With
  29. End Sub
  30.  
  31.  


nota: las variables fila y columna se podrian llamar [casi] de cualquier otra forma (pej: f y c, o Coche y Casa, por poner un ej. tonto)

si te animas a exponer lo que realmente estas haciend o quieres hacer, asi como el codigo que +/- estas usando, sera mas facil darte una respuesta concreta

un saludo
Ivan

NOTA:

el 'activar' la hoja no es porque sea necesario para la mayor parte de la macro, tan solo para seleccionar la celda es necesario activar la correspondiente hoja previamente (por si acaso no fuese ya la activa),

tambien para que puedas visualizar el resultado, si por lo que fuera cuando llamaras a la macro estubieras en otra hoja

fakeswato

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Macros Mareantes En Excel
« Respuesta #4 en: Jueves 1 de Mayo de 2008, 20:25 »
0
wenas, para referirte asi a una celda tomando tu mensaje "filas, culumnas"

Citar
Range("A1").Select

por ejemplo, tendrias que hacerlo de la siguiente manera

Citar
Range(columna & fila).Select

me estoy iniciando en la programacion, espero sirva la ayuda