Ayuda con Macro

29/05/2008 - 20:56 por Isrrael | Informe spam
Hola a toda la comunidad!
Tengo una macro que tiene el siguiente problema:

Range("I1").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
Range("I1").Select
Selection.NumberFormat = "d-mmm"
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=
_
False, Transpose:=False
Range("I2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = _
"=IF(RC[-2]<R1C9,""Burn"",IF(RC[-2]>=R1C9,""On Time"",""""))"
Range("H2").Select
Selection.End(xlDown).Select
Selection.End(xlToRight).Select
ActiveCell.Offset(0, 1).Select <
Problema AQUI
ActiveCell.FormulaR1C1 = "Hello"

Resulta que quiero que mediante selection.end se vaya al extremo inferior
derecho del documento editable en excel y luego a la siguiente celda a la
derecha..., ya intente usar Activecell.Offset(0,1). Select, pero esta
instrucccion me manda hasta el final de la fila IV, en donde este..., y lo
que quiero es que solo se mueva 1 celda...

gracias anticipadas!!
Isrrael

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
30/05/2008 - 03:57 | Informe spam
hola, Isrrael !

Tengo una macro que tiene el siguiente problema: (...)
... quiero que mediante selection.end se vaya al extremo inferior derecho del documento editable en excel
y luego a la siguiente celda a la derecha...
ya intente usar Activecell.Offset(0,1). Select, pero esta instrucccion me manda hasta el final de la fila IV
en donde este..., y lo que quiero es que solo se mueva 1 celda...



1) la instruccion que "te manda" hasta la columna IV... NO es la que supones -> Activecell.Offset(0, 1).Select
sino la que tienes una linea antes... -> Selection.End(xlToRight).Select
-> la otra (Activecell.Offset(0, 1).Select)...
(en realidad) no hace nada... -> ya no tiene "a donde moverse" si "ya llegaste" hasta la columna IV

2) lo anterior... "asumiendo/suponiendo/..." que cuando "te moviste" al final de la columna H...
con las dos instrucciones previas: -> Range("H2").Select y -> Selection.End(xlDown).Select
a partir de la siguiente celda en la columna H ya todas estan "vacias" (o "llenas" ?) -???-

3) si lo anterior es "acertado"... solo ELIMINA la instruccion: -> Selection.End(xlToRight).Select
y en su lugar dejas (unicamente) la instruccion: -> Activecell.Offset(0, 1).Select

(dicho sea de paso)... no es necesaria tanta (re)seleccion de celdas (p.e.)
esta parte de tu codigo:
Range("I1").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
Range("I1").Select
Selection.NumberFormat = "d-mmm"
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False

la puedes cambiar por esta:
With Range("I1"): .Value = Date: NumberFormat = "d-mmm": End With

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ el codigo expuesto __
Range("I1").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
Range("I1").Select
Selection.NumberFormat = "d-mmm"
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("I2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = _
"=IF(RC[-2]<R1C9,""Burn"",IF(RC[-2]>=R1C9,""On Time"",""""))"
Range("H2").Select
Selection.End(xlDown).Select
Selection.End(xlToRight).Select
ActiveCell.Offset(0, 1).Select < Problema AQUI
ActiveCell.FormulaR1C1 = "Hello"
Respuesta Responder a este mensaje
#2 Isrrael
30/05/2008 - 22:10 | Informe spam
hola Héctor Miguel,
Efectivamente, no se en que estaba pensando ayer..., es decir, realice la
macro con la herramienta de grabacion de excel, entonces, es asi como
aparecio esa instruccion..., ahora, nuevamente solicitando ayuda, ya no se
detiene la marco y corre, pero por alguna razon, la formula no la coloca en
la ventana donde ejecuto la macro, sino en el libro que la contiene.


Un poco mas de explicacion, en mi excel 2000 tengo una barra de herramientas
con botones perzonalizados que ejecutan macros sencillas a diversos tipos de
libros, sin embargo, ahora no se en donde esta el problema, por que se
ejecuta en el libro en donde guardo las macros y no en el csv que
habitualmente descargo...

este es el codigo completo:

Sub CorregirGuiasCommDates()
Rows("1:2").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Delete
Range("A1").Select
Selection.EntireRow.Delete
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:="=", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.Replace What:="""", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.NumberFormat = "0"
Range("G1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:="""", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.Replace What:="=", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.NumberFormat = "d-mmm"
Range("H1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:="=", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.Replace What:="""", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.NumberFormat = "h:mm"
Range("I1").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
Range("I1").Select
Selection.NumberFormat = "d-mmm"
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=
_
False, Transpose:=False
Range("I2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = _
"=IF(RC[-2]<R1C9,""Burn"",IF(RC[-2]>=R1C9,""On Time"",""""))"
< esta no se ejecuta en el libro "variable"
Range("H2").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "Hello"
Selection.End(xlUp).Select
Range("I2").Select
Selection.Copy
Range("I3").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("I2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=
_
False, Transpose:=False
Range("J1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "Status"
Range("K1").Select
ActiveCell.FormulaR1C1 = "Time"
Range("L1").Select
ActiveCell.FormulaR1C1 = "Emp"
Range("M1").Select
ActiveCell.FormulaR1C1 = "Ext Data"
Range("A1").Select
Selection.Sort Key1:=Range("G2"), Order1:=xlAscending, Key2:=Range("H2")
_
, Order2:=xlAscending, Key3:=Range("D2"), Order3:=xlAscending,
Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False,
Orientation:=xlTopToBottom
Range("A2").Select
ActiveWindow.FreezePanes = True
ThisWorkbook.Close
End Sub

mil gracias !!!
Isrrael



"Héctor Miguel" wrote in message
news:
hola, Isrrael !

Tengo una macro que tiene el siguiente problema: (...)
... quiero que mediante selection.end se vaya al extremo inferior derecho
del documento editable en excel
y luego a la siguiente celda a la derecha...
ya intente usar Activecell.Offset(0,1). Select, pero esta instrucccion me
manda hasta el final de la fila IV
en donde este..., y lo que quiero es que solo se mueva 1 celda...



1) la instruccion que "te manda" hasta la columna IV... NO es la que
supones -> Activecell.Offset(0, 1).Select
sino la que tienes una linea antes... ->
Selection.End(xlToRight).Select
-> la otra (Activecell.Offset(0, 1).Select)...
(en realidad) no hace nada... -> ya no tiene "a donde moverse" si
"ya llegaste" hasta la columna IV

2) lo anterior... "asumiendo/suponiendo/..." que cuando "te moviste" al
final de la columna H...
con las dos instrucciones previas: -> Range("H2").Select y ->
Selection.End(xlDown).Select
a partir de la siguiente celda en la columna H ya todas estan "vacias"
(o "llenas" ?) -???-

3) si lo anterior es "acertado"... solo ELIMINA la instruccion: ->
Selection.End(xlToRight).Select
y en su lugar dejas (unicamente) la instruccion: ->
Activecell.Offset(0, 1).Select

(dicho sea de paso)... no es necesaria tanta (re)seleccion de celdas
(p.e.)
esta parte de tu codigo:
Range("I1").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
Range("I1").Select
Selection.NumberFormat = "d-mmm"
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=
_
False, Transpose:=False
Application.CutCopyMode = False

la puedes cambiar por esta:
With Range("I1"): .Value = Date: NumberFormat = "d-mmm": End With

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ el codigo expuesto __
Range("I1").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
Range("I1").Select
Selection.NumberFormat = "d-mmm"
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=False
Range("I2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = _
"=IF(RC[-2]<R1C9,""Burn"",IF(RC[-2]>=R1C9,""On Time"",""""))"
Range("H2").Select
Selection.End(xlDown).Select
Selection.End(xlToRight).Select
ActiveCell.Offset(0, 1).Select <
Problema AQUI
ActiveCell.FormulaR1C1 = "Hello"




Respuesta Responder a este mensaje
#3 Héctor Miguel
31/05/2008 - 01:08 | Informe spam
hola, Isrrael !

... ya no se detiene la marco y corre, pero por alguna razon
la formula no la coloca en la ventana donde ejecuto la macro, sino en el libro que la contiene...
... no se en donde esta el problema, por que se ejecuta en el libro en donde guardo las macros
y no en el csv que habitualmente descargo...
este es el codigo completo: (... bonche de lineas de codigo...)
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = _
"=IF(RC[-2]<R1C9,""Burn"",IF(RC[-2]>=R1C9,""On Time"",""""))" < esta no se ejecuta en el libro "variable"



no se por que "asumes" que la formula "debiera" depositarse (siempre ?) en el libro "variable" (supongo un .CSV abierto ?)
si utilizas una "ActiveCell"... que corresponde a la celda activa DE LA HOJA ACTIVA y a su vez DEL LIBRO ACTIVO

op1: asegurate que el libro activo <-> la hoja activa <-> correspondan con la "ActiveCell" que necesitas afectar

op2: utiliza instrucciones "precisas" para indicar cual es la celda que se debera afectar (p.e.)
workbooks("el archivo cvs").worksheets("etiqueta de la hoja").range("ab45").etc.etc. etc. PERO...
ya no podrias usar la propiedad ".FormulaR1C1" puesto que esta forma SI considera cual es la celda activa (en ese momento)

saludos,
hector.
Respuesta Responder a este mensaje
#4 Isrrael
02/06/2008 - 18:51 | Informe spam
hola HM
Pues ya resolvi el problema, fui casi paso a paso, hasta encontrar cada uno
de los errores que tenia,

mil gracias por el apoyo!
Isrrael
"Isrrael" wrote in message
news:
hola Héctor Miguel,
Efectivamente, no se en que estaba pensando ayer..., es decir, realice la
macro con la herramienta de grabacion de excel, entonces, es asi como
aparecio esa instruccion..., ahora, nuevamente solicitando ayuda, ya no se
detiene la marco y corre, pero por alguna razon, la formula no la coloca
en la ventana donde ejecuto la macro, sino en el libro que la contiene.


Un poco mas de explicacion, en mi excel 2000 tengo una barra de
herramientas con botones perzonalizados que ejecutan macros sencillas a
diversos tipos de libros, sin embargo, ahora no se en donde esta el
problema, por que se ejecuta en el libro en donde guardo las macros y no
en el csv que habitualmente descargo...

este es el codigo completo:

Sub CorregirGuiasCommDates()
Rows("1:2").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.EntireRow.Delete
Range("A1").Select
Selection.EntireRow.Delete
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:="=", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.Replace What:="""", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.NumberFormat = "0"
Range("G1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:="""", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.Replace What:="=", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.NumberFormat = "d-mmm"
Range("H1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:="=", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.Replace What:="""", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Selection.NumberFormat = "h:mm"
Range("I1").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
Range("I1").Select
Selection.NumberFormat = "d-mmm"
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=
_
False, Transpose:=False
Range("I2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = _
"=IF(RC[-2]<R1C9,""Burn"",IF(RC[-2]>=R1C9,""On Time"",""""))"
< esta no se ejecuta en el libro "variable"
Range("H2").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "Hello"
Selection.End(xlUp).Select
Range("I2").Select
Selection.Copy
Range("I3").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("I2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=
_
False, Transpose:=False
Range("J1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "Status"
Range("K1").Select
ActiveCell.FormulaR1C1 = "Time"
Range("L1").Select
ActiveCell.FormulaR1C1 = "Emp"
Range("M1").Select
ActiveCell.FormulaR1C1 = "Ext Data"
Range("A1").Select
Selection.Sort Key1:=Range("G2"), Order1:=xlAscending,
Key2:=Range("H2") _
, Order2:=xlAscending, Key3:=Range("D2"), Order3:=xlAscending,
Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False,
Orientation:=xlTopToBottom
Range("A2").Select
ActiveWindow.FreezePanes = True
ThisWorkbook.Close
End Sub

mil gracias !!!
Isrrael



"Héctor Miguel" wrote in message
news:
hola, Isrrael !

Tengo una macro que tiene el siguiente problema: (...)
... quiero que mediante selection.end se vaya al extremo inferior
derecho del documento editable en excel
y luego a la siguiente celda a la derecha...
ya intente usar Activecell.Offset(0,1). Select, pero esta instrucccion
me manda hasta el final de la fila IV
en donde este..., y lo que quiero es que solo se mueva 1 celda...



1) la instruccion que "te manda" hasta la columna IV... NO es la que
supones -> Activecell.Offset(0, 1).Select
sino la que tienes una linea antes... ->
Selection.End(xlToRight).Select
-> la otra (Activecell.Offset(0, 1).Select)...
(en realidad) no hace nada... -> ya no tiene "a donde moverse" si
"ya llegaste" hasta la columna IV

2) lo anterior... "asumiendo/suponiendo/..." que cuando "te moviste" al
final de la columna H...
con las dos instrucciones previas: -> Range("H2").Select y ->
Selection.End(xlDown).Select
a partir de la siguiente celda en la columna H ya todas estan "vacias"
(o "llenas" ?) -???-

3) si lo anterior es "acertado"... solo ELIMINA la instruccion: ->
Selection.End(xlToRight).Select
y en su lugar dejas (unicamente) la instruccion: ->
Activecell.Offset(0, 1).Select

(dicho sea de paso)... no es necesaria tanta (re)seleccion de celdas
(p.e.)
esta parte de tu codigo:
Range("I1").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
Range("I1").Select
Selection.NumberFormat = "d-mmm"
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False

la puedes cambiar por esta:
With Range("I1"): .Value = Date: NumberFormat = "d-mmm": End With

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ el codigo expuesto __
Range("I1").Select
ActiveCell.FormulaR1C1 = "=TODAY()"
Range("I1").Select
Selection.NumberFormat = "d-mmm"
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=False
Range("I2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = _
"=IF(RC[-2]<R1C9,""Burn"",IF(RC[-2]>=R1C9,""On Time"",""""))"
Range("H2").Select
Selection.End(xlDown).Select
Selection.End(xlToRight).Select
ActiveCell.Offset(0, 1).Select
< Problema AQUI
ActiveCell.FormulaR1C1 = "Hello"








email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida