Jump to content

[SOLUCIONADO] Separador de lista


Recommended Posts

intento escribir una orden muy larga y me da este error:

error de compilación

Se esperaba: separador de lista o)

esto es lo que quiero introducir:

Range("BW10:CM129,BW133:CM176,CT:CX129,CT133:CX182,DD10:DH129,DD133:DH182,DN10:DR129,DN133:DN182,DX10:EB129,DX133:EB182,EH10:EL129,EH133:EL182,ER10:EV129,ER133:EV182,FB10:FF129,FB133:FF182).SELECT

Link to post
Share on other sites

y revisa también la referencia que está en rojo, parece que le falta el número de fila:


Range("BW10:CM129,BW133:CM176,[COLOR="red"]CT[/COLOR]:CX129,CT133:CX182,DD10:DH129,DD133:DH182,DN10:DR129,DN133:DN182,DX10:EB129,DX133:EB182,EH10:EL129,EH133:EL182,ER10:EV129,ER133:EV182,FB10:FF129,FB133:FF182[COLOR="red"]"[/COLOR]).SELECT[/CODE]

Link to post
Share on other sites

claro, para que quede en mas lineas, solo debes poner _ donde quieres terminar la linea, das a enter y sigues poniendo el codigo.

Range("BW10:CM129,BW133:CM176,CT:CX129,CT133:CX182,_
DD10:DH129,DD133:DH182,DN10:DR129,DN133:DN182,DX10:EB129,_
DX133:EB182,EH10:EL129,EH133:EL182,ER10:EV129,ER133:EV182,_
FB10:FF129,FB133:FF182").SELECT[/CODE]

Link to post
Share on other sites

Hola,

no más para complementar lo que ya te dice nuestro amigo himself, para continuar una línea debes usar " _". Esto es: Un espacio y un guión bajo. Recuerda el espacio, son dos carácteres los que indican la continuación de la línea: el espacio y el guión bajo seguidos.

Ten en cuenta que una cadena de texto no la puedes partir con el " _", antes debes cerrar la cadena de texto y concatenarla, por ejemplo:

Range("BW10:CM129," & _
"BW133:CM176," & _
"CT10:CX129," & _
"CT133:CX182," & _
"DD10:DH129," & _
"DD133:DH182," & _
"DN10:DR129," & _
"DN133:DN182," & _
"DX10:EB129," & _
"DX133:EB182," & _
"EH10:EL129," & _
"EH133:EL182," & _
"ER10:EV129," & _
"ER133:EV182," & _
"FB10:FF129," & _
"FB133:FF182").Select[/CODE]

pues todo lo que uses dentro de las comillas será leído como texto, por lo que si usas algo como

[CODE]MsgBox "Línea 1 _
continuación línea 1"[/CODE]

VBA no lo partirá, pues al tenerlo dentro de comillas le indicas que tome el conjunto de caracteres " _" de manera textual y no como separadores de línea. Por ello deberás cerrar las comillas, partir la línea y concatenar:

[CODE]MsgBox "Línea 1 " & _
"continuación línea 1"[/CODE]

Link to post
Share on other sites

Hola

Y solo para complementar los comentarios ya vertidos por los masters

No se le puede pasar un string mayor a 255 como parametro a al objeto range, en dado caso de que sea mayor, la recomendacion es realizar una union de rangos para no tener problemas con el largo de la cadena.

ejemplo:

Set Rng1=range("A1:A10")

set Rng2=range("A20:A30")

set UnioRng1Rng2=Union(Rng1,Rng2)

saludos cordiales

Link to post
Share on other sites

Hola:

No he podido resistir la tentación de intervenir:

Sub SeleccionarRango()
Dim Rango, Desde, Hasta

Desde = Array("BW", "CT", "DD", "DN", "DX", "EH", "ER", "FB")
Hasta = Array("CM", "CX", "DH", "DR", "EB", "EL", "EV", "FF")

For x = 0 To UBound(Desde)
Rango = Rango & Desde(x) & "10:" & Hasta(x) & "129,"
Rango = Rango & Desde(x) & "133:" & Hasta(x) & "182,"
Next x

Range(Left(Rango, Len(Rango) - 1)).Select

End Sub
[/CODE]

Otra forma de hacer lo mismo pero mas complicado.

Saludos.

Link to post
Share on other sites
Hola:

No he podido resistir la tentación de intervenir:

Sub SeleccionarRango()
Dim Rango, Desde, Hasta

Desde = Array("BW", "CT", "DD", "DN", "DX", "EH", "ER", "FB")
Hasta = Array("CM", "CX", "DH", "DR", "EB", "EL", "EV", "FF")

For x = 0 To UBound(Desde)
Rango = Rango & Desde(x) & "10:" & Hasta(x) & "129,"
Rango = Rango & Desde(x) & "133:" & Hasta(x) & "182,"
Next x

Range(Left(Rango, Len(Rango) - 1)).Select

End Sub
[/CODE]

Otra forma de hacer lo mismo pero mas complicado.

Saludos.

ESto me va ha ahorrar trabajo de escritura pero quisiera saber,ya que quitando el rango BW:CM los demás se repiten de forma relativa;me explico:

CT COLUMNA 98 - CX COLUMNA 102

CZ COLUMNA 104 -DA COLUMNA 105

DD COLUMNA 108 -DH COLUMNA 112

DJ COLUMNA 114 -DK COLUMNA 115

DN COLUMNA 118 -DR COLUMNA 122

DT COLUMNA 124- DV COLUMNA125

ETC ETC ETC así hasta 14 rangos

o

CT COLUMNA 98 - CX COLUMNA 102--------------CZ COLUMNA 104 -DA COLUMNA 105

DD COLUMNA 108 -DH COLUMNA 112--------------DJ COLUMNA 114 -DK COLUMNA 115

DN COLUMNA 118 -DR COLUMNA 122 -------------- DT COLUMNA 124- DV COLUMNA125

ETC ETC ETC así hasta 7 rangos--------Y----------ETC ETC ETC así hasta 7 rangos

Habrá forma con otro bucle de seleccionar las columnas?

Lo que pretendo con estos rangos es borrar el contenido yo utilizaba este código:

Range("CP133").Select

Dim contador

contador = 0

While contador < 7

contador = contador + 1

ActiveCell.Offset(-123, 4).Range("A1:E120").Select

Selection.ClearContents

ActiveCell.Offset(123, 0).Range("A1:E50").Select

Selection.ClearContents

ActiveCell.Offset(-123, 6).Range("A1:B120").Select

Selection.ClearContents

ActiveCell.Offset(123, 0).Range("A1:B50").Select

Selection.ClearContents

ActiveCell.Offset(0, 0).Select

Wend

Este codigo recoje otros 14 rangos que no he mencionado, el tema es que de esta forma se vueve muy lenta la macro que lo contiene y buscaba una forma de hacerla más rápida.

adjunto un archivo con rangos a borrar contenido.

Espero haberme explicado un saludo, Sebastian

borrarrangos.zip

Link to post
Share on other sites

Hola:

Para acelerar la macro, al pricipio pon:

Application.ScreenUpdating = False[/CODE]

Con esto evitamos el refresco de pantalla y ahorraremos el 90% del tiempo de borrado.

El único problema, es establecer la secuencia de repetición.

Déjame que me lo mire con un poco mas de calma.

¿ Has informado de las columnas, pero y las filas?

Saludos.

Link to post
Share on other sites

Hola de nuevo:

Aquí tienes la macro que has solicitado para borrar rangos

Sub BorrarRangos()
Dim dColumna, hColumna, dFila, Hfila
Application.ScreenUpdating = False
'--
dColumna = Array(98, 104, 108, 114, 118, 124) 'Columnas desde
hColumna = Array(102, 105, 112, 115, 122, 125) 'Columnas hasta
'--
dFila = Array(10, 34) 'Filas desde
Hfila = Array(29, 45) 'Filas hasta
'--
For x = 0 To UBound(dFila)
For y = 0 To UBound(dColumna)
Range(Cells(dFila(x), dColumna(y)), Cells(Hfila(x), hColumna(y))).ClearContents
Next y
Next x
'--
End Sub
[/CODE]

Por supuesto, has de adaptar los rangos.

Saludos.

Link to post
Share on other sites

Gracias por todo pero sobre todo a la dedicación altruista que tienes con todos los foreros tengan el nivel que tenga.

No hay codigo que se te resista, en verdad ma das envidia, pero no de la sana, envidia de la mala mala. Es broma te felicito por tú gran nivel.

Un saludo, Sebastian.

Creo que ahora si podemos dar el tema por SOLUCIONADO

Link to post
Share on other sites
Guest
This topic is now closed to further replies.


×
×
  • Create New...

Important Information

Privacy Policy