En caso contrario, ¿cuál es la estructura del bucle?
Nota del editor: ¡Hola a todos! Hoy es el tercer tutorial práctico de introducción a VBA. Le presentaremos una de las declaraciones más comunes en VBA, la declaración de bucle. Hay cuatro instrucciones de bucle típicas, a saber, bucle Do While...Loop, bucle Do...Loop Until, bucle For...Next y bucle For Each x In y...Next. Vea diagramas de lógica de bucle para comprender las declaraciones de bucle más rápidamente. Para aprender más habilidades, marque y siga el tutorial gráfico de Excel de Tubewo Education.
Prólogo
Después de leer nuestros dos primeros tutoriales introductorios prácticos de VBA, ¿está interesado en seguir aprendiendo? Tal vez los estudiantes ya estén interesados, pero aún no han encontrado una manera de comenzar. Por supuesto, los dos artículos anteriores no son una forma de comenzar, en el mejor de los casos, son solo un "aperitivo". Continúe manteniéndose al día con las expresiones de imágenes electrónicas del autor. No dejaré que se convierta en un "inglés tonto" y se convierta en un "VBA discapacitado" que solo puede leer pero no escribir. Si los dos primeros artículos le han permitido comprender algunas propiedades de los objetos de celda, entonces, en esta etapa, necesita comprender dos "declaraciones" que son inevitables y muy importantes al escribir código.
1. Declaraciones de bucle
1. Asignar un valor a una celda
En el artículo anterior, los estudiantes deberían haber comprendido un punto de conocimiento, que es El proceso. de asignar valores a las celdas. ¿Qué es la asignación? Es ingresar el resultado de una expresión en el atributo VALOR de un determinado objeto de celda (un cierto rango), como por ejemplo la siguiente escritura:
Subasignación 1()
Hojas ("A").[A1] = Hojas("A").[A1].Fila
End Sub
Análisis de código
Línea1: La El atributo FILA de la celda A1 de la hoja de trabajo A se asigna a la celda A1 de la hoja de trabajo A.
2. Asigna valores a 10 celdas
Ahora aumentaremos la dificultad de algunos requisitos y asignaremos valores a las celdas A1:A10. Es muy simple, solo escribe 10 líneas de código.
Subtarea 2()
Con Hojas("A")
.[A1] = .[A1].Fila
.[A2] = .[A2].Fila
.[A3] = .[A3].Fila
.[A4] = .[A4].Fila p>
.[A5] = .[A5].Fila
.[A6] = .[A6].Fila
.[A7] = .[A7] .Fila
.[A8] = .[A8].Fila
.[A9] = .[A9].Fila
.[A10] = .[A10].Row
End With
End Sub
Excepto por escribir demasiado contenido, no hay problema, sin mencionar que también podemos usar copiar y pegar, no es muy problemático cambiar la dirección del celular.
3. Asigne valores a 100 celdas, no, juegue en grande, asigne valores a 100.000 celdas.
Estudiantes, ¿van a escribir 100.000 líneas de comando? Para ser más directo, te daré la respuesta. El código es el siguiente:
Subasignación 3()
For i = 1 To 100000
Con Hojas("A")
.Celdas(i, 1) = .Celdas(i, 1).Fila
Termina con
Siguiente i
End Sub
Línea1: establece la variable de bucle i, el rango del bucle comienza desde 1 y termina en 100000;
Línea2: usa hojas ("A") como padre de la misma serie de objetos Relación de afiliación;
Línea 3: En la operación Hojas("A"), comenzando desde Celdas(1, 1), Celdas(2, 1),... , Celdas(i, 1),... , objetos hasta Celdas (100000, 1), y asigna el atributo FILA correspondiente a la celda correspondiente;
Línea4: final de la sentencia With; p>
Línea 5: final de la declaración de bucle, cuando se cumple la condición del bucle, el bucle continúa y cuando no se cumple la condición, el bucle salta.
Lo anterior es un código escrito en una declaración de bucle para asignar valores a 100.000 celdas. Con la declaración CON, son solo 5 líneas de línea de comando. No es necesario escribir tantos códigos de comando. Usando códigos de bucle, puede operar fácilmente las fuentes de datos que necesita. Esta es la ventaja más fundamental de las declaraciones de bucle.
4. Diagrama lógico circular
El diagrama E del autor expresa el proceso cíclico. Después del resumen, son los dos formatos anteriores. La principal diferencia es: el proceso azul es el primero. condición de bucle, ejecute la declaración solo cuando se cumpla y salga del bucle cuando no se cumpla; el proceso naranja es ejecutar la declaración primero y luego determinar si la variable del bucle cumple la condición; ejecute la declaración y ejecútela nuevamente; de lo contrario, salte del bucle. Para aprender más habilidades, marque y siga el tutorial gráfico de Excel de Tubewo Education.
5. Dos formas gramaticales de sentencias de bucle
Hay dos tipos de sentencias de bucle en EXCEL VBA. En pocas palabras: una es bucle Do, la otra es bucle For y. Tienen dos formatos respectivamente.
1) Instrucción de bucle Do While...Loop, por ejemplo:
Requisito: busque la primera celda vacía en la columna A de la hoja de trabajo "Do Loop".
Sub DoWhile Loop()
i = 1
Con hojas("Do Loop")
Hacer While .Cells(i , 1) lt;gt; ""
i = i 1
Bucle
MsgBox "La primera celda vacía es " amp; 1).Dirección
Finalizar con
End Sub
Análisis de código
Línea 1: Determinar que el valor inicial de la variable del bucle es 1
Línea 2: use Sheets ("Do loop") como afiliación principal de la misma serie de objetos;
Línea 3: la declaración inicial de la declaración del bucle, while (condición del bucle); ) es la unidad La celda no está vacía;
Línea 4: Cuando la celda no está vacía, se cumple la condición del bucle y se ejecuta la instrucción i=i 1. Este código es bastante importante, comúnmente conocido como "contador". Especialmente en declaraciones de bucle, tiene el efecto de aumentar o disminuir regularmente las variables cuando se usa nuevamente, la referencia al objeto cambiará regularmente. p>Línea5: la declaración final de la declaración del bucle, regresa a la Línea3 y juzga el nuevo valor i.
Cuando la celda está vacía, la condición del bucle no se cumple y el bucle salta;
Línea 6: Msgbox muestra el texto explicativo especificado, es decir, "La primera celda vacía es...".
La estructura de bucle de Do While...Loop satisface el proceso azul en el diagrama de flujo del bucle y es una estructura que primero determina las condiciones y luego se ejecuta.
2) Do...Loop Until instrucción de bucle, por ejemplo:
Requisito: según el ejemplo anterior, utilice el método Until para encontrar la primera celda vacía.
Sub DoUntil Loop()
i = 1
Con hojas("Do Loop")
Do
i = i 1
Bucle hasta .Cells(i, 1) = ""
MsgBox "La primera celda vacía es " & .Cells(i, 1 ).Dirección
End With
End Sub
El código no será analizado. Es básicamente el mismo que el código de Do While...Loop, excepto por. la posición de la condición del bucle es diferente de la forma en que está escrita.
La estructura de bucle de Do...Loop Until satisface el proceso naranja en el diagrama de flujo del bucle. Primero ejecuta la declaración y luego determina si se cumple la condición. Si no se cumple la condición, se ejecuta el bucle. continúa y el bucle se puede saltar cuando se alcanza.
Compartir experiencias
Muchos estudiantes que son nuevos en Excel VBA Do loop se toparán con estos dos bucles. Si las condiciones del bucle no se encuentran bien, fácilmente provocarán un "bucle infinito". " . Por lo tanto, la descripción del diagrama E del autor quisiera compartir con ustedes una pequeña reflexión: Si bien la condición es mirar la “puerta de entrada”, solo puedes entrar y jugar si tienes un boleto hasta que la condición sea mirar la “; puerta trasera”, y sólo se puede salir si se tiene entrada y permiso.
Después de entender esto, estás mirando el código Hasta de arriba, a la derecha: cuando la celda es = "", finaliza la declaración y ejecuta el cuadro de mensaje a continuación.
3) Para...Siguiente declaración de bucle:
A través del caso anterior, podemos encontrar un patrón de declaraciones de bucle. Todas tienen un valor inicial primero y luego se acumulan gradualmente. o restar para cambiar el bucle. Las variables pueden operar en diferentes objetos, y lo mismo ocurre con los bucles For...Next, pero es más directo y simple. Eche un vistazo a un código de muestra.
Requisito 1: Sumar los valores de la columna A
Sub For loop()
Con Sheets("For loop")
a = .[A1040000].End(3).Row
Para i = 1 a a
b = b .Cells(i, 1)
Siguiente i
MsgBox "Valor acumulativo de la columna A=" amp b
Finalizar con
End Sub
Análisis de código
Línea 1: utiliza la hoja de trabajo ("bucle For") como afiliación principal de la misma serie de objetos;
Línea 2: toma la celda A1040000, toma el número de fila de la última fila hacia arriba y asigna un valor a la variable a;
Línea3: La declaración inicial del bucle For, y estipula que de 1 a a, es el rango del bucle;
Línea4: Establezca una variable b, b El valor es igual a "el valor de la celda de valor de b en sí". Al cambiar la variable de bucle i, las celdas de la columna A se recorren una vez y la suma se acumula gradualmente.
Este código tiene un formato similar a i=i 1. El valor en sí se agrega a un valor determinado para lograr el efecto acumulativo;
Línea 5: la declaración final del bucle For si el siguiente valor i es. dentro del rango, luego continúa el bucle; de lo contrario, salta fuera del bucle;
Línea 6: el cuadro de mensaje muestra el texto explicativo especificado;
Línea 7: la declaración final de la declaración With.
Requisito 2: Aún en esta columna de datos, extraer los valores de las filas pares y sumarlos
Es muy sencillo y se puede hacer con un poco de conocimiento. El bucle For se puede configurar dentro del rango del bucle. El tamaño del paso de cada bucle solo necesita agregar un poco de contenido al código anterior, de la siguiente manera:
La variable del bucle comienza desde la línea 2 y el paso. El tamaño de cada bucle es (Paso) es la distancia entre dos valores, luego la variable i general es 2, 4, 6, 8,... y así sucesivamente.
En comparación con el bucle Do, el bucle For puede proporcionar un rango inicial y final muy preciso para que podamos recorrer la hoja de trabajo. Atravesar celdas es un método de bucle muy útil y muy común. Proceso del diagrama azul. Juzgue primero y luego ejecute.
4) Para cada x en y...Siguiente declaración de bucle:
Estrictamente hablando, esta declaración todavía pertenece a la estructura de For...Next, que es otra forma de expresión. De ahora en adelante, cuando hablemos de diccionarios, nos encontraremos con esta estructura nuevamente. Hoy la veremos por primera vez. Por ejemplo:
Requisito: sumar el rango de celdas seleccionado.
Sub Foreach Loop()
Atenuar rg como rango
Para cada rg en la selección
a = a rg.Value
Siguiente
MsgBox "Suma del área seleccionada = amp; a
Fin del sub
Análisis de código
Línea 1: Defina una variable rg, es una variable de celda (discutiremos el tema de la definición de variables más adelante)
Línea 2: este código se puede traducir literalmente al inglés. En Selección (área de celda seleccionada), recorra cada variable de celda rg;
Línea3: acumular en la variable a;
Línea4: finaliza la declaración del bucle For, si el siguiente valor rg está dentro del rango de selección, continúa el bucle; de lo contrario, salta el bucle; p>
Línea 5: Msgbox muestra el texto explicativo especificado.
El bucle For de esta estructura se refiere principalmente a atravesar cada objeto individual en un "conjunto de objetos" específico. También pertenece al proceso del diagrama azul. Si está en el proceso, primero se juzga y luego se ejecuta. "conjunto de objetos", ejecute la declaración; de lo contrario, salga del bucle.
El tutorial de hoy le presenta la declaración de bucle, una de las declaraciones más comunes e importantes en VBA. Sólo cuando aprenda los bucles podrá demostrar que sus alumnos están "en el camino correcto"; de lo contrario, en realidad son simplemente "VBA para discapacitados" que pueden leer pero no escribir. Para los bucles, se necesita un proceso para que los principiantes lo comprendan, pero debe saber que en la práctica real, todavía hay muchas variables esperando que resumamos y completemos los huecos. Busquemos tiempo para probarlo rápidamente. para escribir lo antes posible. Publica tu propio código.
El próximo artículo continuará compartiendo con usted otra declaración importante en VBA, la declaración de juicio. Para aprender más habilidades, marque y siga el tutorial gráfico de Excel de Tubewo Education.