Para KL

31/03/2005 - 03:04 por NOEŽS | Informe spam
Hola KL

Fijate que estoy tratando de ejecutar este codigo pero no
me deja te comento como lo estoy haciendo

1 Estoy en el libro y marque los datos que seran afectados
2 Luego me voy a Herramientas\macros\editor de vb en el
editor ingreso a insertar le doy modula luego pego el
codigo que me enviaste le doy ejecutar > luego lo guardo y
no pasa nada solo me sale que la siguiente parte esta mal
ya que sale color rojo

Set rng = .Range(.Cells(PFila, Col), .Cells(PFila + (Ciclo
- 1),
Col))
For i = 1 To Int(NCadenas)
.Cells(i, Col).Offset(0, 1) = _
Join(Application.Transpose(rng.Offset(Ciclo
* (i - 1), 0)),
Separador)
Next i
Set rng = .Range(.Cells(Ciclo * (i - 1) + 1, Col),
.Cells(UFila,
Col))



me podrias ayudar con esto de antemano gracias.



Hola NOEŽS,

Prueba el siguiente macro.

Saludos,
KL

'-Inicio Codigo-
Sub Concatenar()
Dim rng As Range, Col As String
Dim i As Integer, PFila As Integer
Dim UFila As Long, NCadenas As Long
Dim Ciclo As Long, Separador As String

Ciclo = 20
Col = "A"
PFila = 1
Separador = "; "
With ActiveSheet
UFila = .Cells(.Rows.Count, Col).End(xlUp).Row
NCadenas = (UFila - PFila) / Ciclo
If NCadenas < 1 Then Exit Sub
Set rng = .Range(.Cells(PFila, Col), .Cells(PFila +
(Ciclo - 1),
Col))
For i = 1 To Int(NCadenas)
.Cells(i, Col).Offset(0, 1) = _
Join(Application.Transpose(rng.Offset(Ciclo
* (i - 1), 0)),
Separador)
Next i
Set rng = .Range(.Cells(Ciclo * (i - 1) + 1, Col),
.Cells(UFila,
Col))
.Cells(i, Col).Offset(0, 1) = _
Join(Application.Transpose(rng), Separador)
End With
End Sub
'-Fin Codigo-




ola Kl no te preocupes todo es legal, fijate que ya revise
en lo de send mail pero no tengo ninguna opcion para envio
el correo de esa manera el correo es de Mozilla Firefox y
no me permite hacer esto, ya intente de muchas maneras pero
no me funciona, la unica idea que se me ocurrio fue hacer
esto de concatenar y lo demas, espero tu ayuda.


Hola NOEŽS,

Asumo buenas intenciones y la legalidad de lo q intentas


hacer. Si

realmente se trata de las direcciones de correo, ?sabias q


precisamente el

metodo .SendMail admite rangos (verticales u horizontales)


y mattrices

verticales para multiples direcciones? Igual te facilita


la tarea.


Saludos,
KL

"NOEŽS" <noes182@hotmail.com> wrote in message
news:030101c52b1a$18045b90$a501280a@phx.gbl...
Hola, podrían ayudarme a simplificar esto con un macro o
algo así. De antemano gracias.

Tengo los siguientes datos ejemplo de 1 a 2000

A
1 1
2 2
3 3
4 4
.. .
.. .
2000 2000

Lo que necesito es un codigo de VB que me concatene de 20
en 20 horizontalmente en la hoja numero 2 pero no se como
hacerlo podrian ayudarme con esto ya que hacerlo
manualmente me esta llevando mucho tiempo y tengo un tiempo
limite para hacerlo, los datos son direcciones de Email,
pero el correo que utilizo es como hotmail que no me
permite copiar y pegar verticalmente las direcciones si no
unicamente horizontalmente ya que al momento de copiar y
pegar solo me tira la primera direccion y tengo un limite
de envio de 20, por esa razon necesito algo que me
simplifique ya que son miles de direcciones. Espero
haberme dado a entender de antemano gracias. por su ayuda.


.



.

Preguntas similare

Leer las respuestas

#1 KL
31/03/2005 - 09:28 | Informe spam
Hola NOE´S,

Es que al postear el mensaje las lineas de codigo se han desplazado lo cual
impide el del macro. Abajo te pongo una version con lineas mas cortas qu
espero que no se modifique al enviarla.

Saludos,
KL

'-Inicio Codigo-
Sub Concatenar()
Dim rng As Range, Col As String
Dim i As Integer, PFila As Integer
Dim UFila As Long, NCadenas As Long
Dim Ciclo As Long, Separador As String

Ciclo = 20
Col = "A"
PFila = 1
Separador = "; "
With ActiveSheet
UFila = .Cells(.Rows.Count, Col).End(xlUp).Row
NCadenas = (UFila - PFila) / Ciclo
If NCadenas < 1 Then Exit Sub
Set rng = .Range(.Cells(PFila, Col), .Cells(PFila _
+ (Ciclo - 1), Col))
For i = 1 To Int(NCadenas)
.Cells(i, Col).Offset(0, 1) = _
Join(Application.Transpose(rng.Offset(Ciclo _
* (i - 1), 0)), Separador)
Next i
Set rng = .Range(.Cells(Ciclo * (i - 1) + 1, Col), _
.Cells(UFila, Col))
.Cells(i, Col).Offset(0, 1) = _
Join(Application.Transpose(rng), Separador)
End With
End Sub
'-Fin Codigo-
Respuesta Responder a este mensaje
#2 Anonimo
31/03/2005 - 16:05 | Informe spam
Muchisimas gracias kl por tu ayuda en esto en verdad me
ayudara bastante, fijate que como lo indicas que es
demasiado largo horizontalmente probando el primer codigo
empeze a ver por que era el error y por lo que indicas pero
lo pude ejecutar ya que empece a cambiar de lugar las
lineas y me lo ejecuto, hay alguna ley que indique como
debe empezar un macro ya que creo que al momento de empezar
con punto es una de ellas por que asi me funciono esto para
que a la otra no te moleste tanto, no se si habra algun
sitio que exponga esto de antemano gracias. por los dos
codigos.


Hola NOEŽS,

Es que al postear el mensaje las lineas de codigo se han


desplazado lo cual
impide el del macro. Abajo te pongo una version con lineas


mas cortas qu
espero que no se modifique al enviarla.

Saludos,
KL

'-Inicio Codigo-
Sub Concatenar()
Dim rng As Range, Col As String
Dim i As Integer, PFila As Integer
Dim UFila As Long, NCadenas As Long
Dim Ciclo As Long, Separador As String

Ciclo = 20
Col = "A"
PFila = 1
Separador = "; "
With ActiveSheet
UFila = .Cells(.Rows.Count, Col).End(xlUp).Row
NCadenas = (UFila - PFila) / Ciclo
If NCadenas < 1 Then Exit Sub
Set rng = .Range(.Cells(PFila, Col), .Cells(PFila _
+ (Ciclo - 1), Col))
For i = 1 To Int(NCadenas)
.Cells(i, Col).Offset(0, 1) = _
Join(Application.Transpose(rng.Offset(Ciclo _
* (i - 1), 0)), Separador)
Next i
Set rng = .Range(.Cells(Ciclo * (i - 1) + 1, Col), _
.Cells(UFila, Col))
.Cells(i, Col).Offset(0, 1) = _
Join(Application.Transpose(rng), Separador)
End With
End Sub
'-Fin Codigo-


.

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