¿Aplicando el mismo formato a múltiples bordes en Excel VBA? -- excel campo con vba campo con performance camp codereview Relacionados El problema

Applying same formatting to multiple borders in Excel VBA?


2
vote

problema

Español

¿Hay una mejor manera de formatear las celdas con fronteras de lo que obtienes cuando grabas una macro? Por ejemplo, quiero agregar bordes a un rango de celdas. El código grabado es:

  Range("A1:C19").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft)     .LineStyle = xlContinuous     .ColorIndex = 0     .TintAndShade = 0     .Weight = xlThin End With With Selection.Borders(xlEdgeTop)     .LineStyle = xlContinuous     .ColorIndex = 0     .TintAndShade = 0     .Weight = xlThin End With With Selection.Borders(xlEdgeBottom)     .LineStyle = xlContinuous     .ColorIndex = 0     .TintAndShade = 0     .Weight = xlThin End With With Selection.Borders(xlEdgeRight)     .LineStyle = xlContinuous     .ColorIndex = 0     .TintAndShade = 0     .Weight = xlThin End With With Selection.Borders(xlInsideVertical)     .LineStyle = xlContinuous     .ColorIndex = 0     .TintAndShade = 0     .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal)     .LineStyle = xlContinuous     .ColorIndex = 0     .TintAndShade = 0     .Weight = xlThin End With   

¿Se puede acortar esto?

Original en ingles

Is there a better way to format the cells with borders than what you get when you record a macro? For example, I want to add borders to a cell range. The recorded code is:

Range("A1:C19").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft)     .LineStyle = xlContinuous     .ColorIndex = 0     .TintAndShade = 0     .Weight = xlThin End With With Selection.Borders(xlEdgeTop)     .LineStyle = xlContinuous     .ColorIndex = 0     .TintAndShade = 0     .Weight = xlThin End With With Selection.Borders(xlEdgeBottom)     .LineStyle = xlContinuous     .ColorIndex = 0     .TintAndShade = 0     .Weight = xlThin End With With Selection.Borders(xlEdgeRight)     .LineStyle = xlContinuous     .ColorIndex = 0     .TintAndShade = 0     .Weight = xlThin End With With Selection.Borders(xlInsideVertical)     .LineStyle = xlContinuous     .ColorIndex = 0     .TintAndShade = 0     .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal)     .LineStyle = xlContinuous     .ColorIndex = 0     .TintAndShade = 0     .Weight = xlThin End With 

Can this be shortened?

        
   
   

Lista de respuestas

3
 
vote
vote
La mejor respuesta
 

Si la pregunta es "¿Cómo aplico el mismo formato a múltiples bordes?" Luego, la siguiente es una forma:

  flowRight2  

El flowRight3 / flowRight4 le ofrece una matriz de las ID de borde que especifique, que se ejecuta desde flowRight5 a flowRight6 . Luego, dentro del bucle, flowRight7 es el flowRight8 Puede pasar a flowRight9 .

 

If the question is "how do I apply the same formatting to multiple borders?" then the following is one way:

Dim the_borders As Variant the_borders = Array(xlEdgeLeft, xlEdgeTop, xlEdgeBottom, xlEdgeRight, xlInsideVertical, xlInsideHorizontal)     ' Or whatever xlEdge* constants you want to list  Dim idx As Long For idx = LBound(the_borders) To UBound(the_borders)     With Selection.Borders(the_borders(idx))     ' Process the right border         .LineStyle = xlContinuous         .ColorIndex = 0         .TintAndShade = 0         .Weight = xlThin     End With Next idx 

The As Variant / Array combo gives you an array of the border IDs you specify, running from LBound(the_borders) to UBound(the_borders). Then, within the loop, borders(idx) is the XlBordersIndex you can pass to Selection.Borders.

 
 
2
 
vote

También puedes usar. Añadí el rango de selección para que obtengas Intellisense.

  partial0  
 

You can also use. I added the selection range so you get intellisense.

Dim selectionRange As Range Set selectionRange = Selection  Dim theLineStyle As XlLineStyle theLineStyle = xlContinuous  With selectionRange     .BorderAround theLineStyle      .Borders(xlInsideHorizontal).LineStyle = theLineStyle     .Borders(xlInsideVertical).LineStyle = theLineStyle end With 
 
 
 
 

Relacionados problema

8  Simple GCD Utility en Java  ( Simple gcd utility in java ) 
i anteriormente discutido El rendimiento se refiere a diferentes algoritmos GCD. Escribí una simple clase de Java que implementa el algoritmo binario GCD. E...

6  Palindrome más largo en una matriz  ( Longest palindrome in an array ) 
Soy nuevo en la programación, y creo que este código podría mejorarse. ¿Alguna sugerencia? 'done'0 ...

4  Simulación simple de red neural en C ++ (Ronda 2)  ( Simple neural network simulation in c round 2 ) 
Intro Ayer He publicado esta pregunta . Desde entonces, he actualizado mi código para incorporar estas sugerencias . También he eliminado la dependencia d...

5  Memoria / Performance of Merge Sort Code  ( Memory performance of merge sort code ) 
Escribí un código de tipo de combinación para un poco de bocadillo nocturno. Lo he puesto trabajando, pero solo estaba mirando a aprender si me faltaba algo e...

1  Compruebe si dos cadenas son permutación entre sí  ( Check if two strings are permutation of each other ) 
private String sort(String word) { char[] content = word.toCharArray(); Arrays.sort(content); return new String(content); } private boolea...

3  Generador de imágenes de Mandelbrot con iteración paralela  ( Mandelbrot image generator with parallel iteration ) 
Actualmente estoy tratando de optimizar esta clase que tengo para la generación fractal. La ecuación está destinada a ser conectable; He usado z => z*z + c ...

1  Integración de oscilador de fase perturbada  ( Perturbed phase oscillator integration ) 
Estoy integrando un sistema de osciladores de fase perturbados. Defino el sistema de ecuación y también la matriz jacobiana. Tengo que remodelar el vector dim...

5  Encuentre el próximo número Prime - Control de flujo de los bucles anidados 'para `  ( Find the next prime number flow control of nested for loops ) 
Este código funciona perfectamente, pero me molesta. Tener un bucle etiquetado y anidado Bucle, con un Enumerable<T>.Empty()0 Declaración, y un 9988777665...

35  Demasiados bucles en la aplicación de dibujo  ( Too many loops in drawing app ) 
Tengo un método que tiene muchos bucles: #ifndef __RUNES_STRUCTURES_H #define __RUNES_STRUCTURES_H /* Runes structures. */ struct Game { char board[2...

2  IMACROS BOT para realizar refrescos  ( Imacros bot for performing refreshes ) 
Estoy tratando de simplificar este código. Parece que todo funciona como debería; Sin embargo, cuando en el bucle de actualización de Imacro, parece un poco i...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos