Bucle For-Next en Visual Basic 6 (vb6)

Bienvenidos a Ver Tutoriales.com, en esta ocasión voy a exponer el código de un bucle for next en visual basic 6 (vb6).

He recibido un par de correos diciendome en el post anterior que no expuse el código de visual basic 6 (vb6), es cierto, pasé por alto ese detalle suponiendo que no tendrían problema en adaptarlo, pero cierto es, que me equivoqué ya que no todos tenemos el mismo nivel, ni el mismo conocimiento. Y aquí estamos para ayudar, así que para que todos aprendamos…

Este breve artículo va dirigido a Roberto y Capuchón dos iniciados en Vb6 con muchas ganas de aprender y que me están siguiendo desde hace tiempo.

Bueno vamos al lio. Voy a exponer el código “base”:

For contador = inicio to fin [Step]

[exit for]

Next

Vamos a ver paso por paso que es cada elemento del bucle for:

– contador, es la variable de control, es donde se irá almacenando cada una de las vueltas del bucle,

– inicio, el valor inicial del bucle.

– fin, el valor donde ha de terminar

– step (opcional), el valor del sumatorio (puede ser negativo)

– exit for (opcional) para romper el flujo del bucle y salir directamente.

Con esto quedaría explicado el bucle tal y como hicimos en Flex. Aún así pondré un ejemplo con valores para dejarlo más claro:

For contador = 0 to 10 step 2

‘ hacemos cosas repitiendose

Next contador

En este caso utilizamos step por que vamos a ir de 2 en 2, si fuera de 1 en 1 no habría que ponerlo aunque no daría error al utilizarlo con 1. Cerramos con Next contador, que aunque tampoco hace falta poner el nombre de la variable de control del bucle, es aconsejable ponerla.

Espero que quede aclarada la duda. Tambien os pediría que si os surgen dudas con respecto al artículo que lo comenteis en vez de enviarme el correo, así nos ahorramos tiempo y tambien lo compartimos con todos.

Un saludo!

Te puede interesar:

37 comentarios

  • eddys betancourt commented on 20 octubre, 2010 Reply

    hola,soy nuevo en visual 6 no tengo muchos conosimientos en programacion pero lla llebo 2 meses seguidos intentando hacer un programa y me e estancado en algo que quisiera preguntar. para ver si me pueden ayudar
    estoy haciendo mi propio reproductor de mp3 con buscador y lista de reproducion, no es nada nuevo pero lo importante es que lo estoy haciendo yo y eso me sube la moral.
    por ahora solo quiero que me respondan aunque el saludo para poder saber si cuento con ustedes para darme una manito en mi programa

    • VideoTutoriales commented on 20 octubre, 2010 Reply

      Hola Eddys!

      Claro que sí, estamos para ayudar.

      Dispara cuando quieras!

  • roberth commented on 7 enero, 2011 Reply

    hola q tal soy estudiante de computacion e informatica de primer ciclo y necito saber mas sobre visual basic por favor necito todo el material relacionado con dicho programa por favor es urgente grasias

    • VideoTutoriales commented on 8 enero, 2011 Reply

      ¿Algo en concreto? Visual Basic es amplísimo… si me dices sobre qué quieres programar quizás pueda orientarte.

      Un saludo

  • Gustavo commented on 9 febrero, 2011 Reply

    Estimado, lamento tener que molestarte, pero nesecito solucionar cuanto antes este problema. Te ubico un poco.
    Trabajo en VB6 y tengo un formulario con muchos txt en matriz. los cuales se marcan con una x o vacios. Al momento de actualizar (update) los datos la hace, pero con error, coloca a todos los campos de la tabla el mismo valor. Te dejo una muestra del codigo para que me deis una ayuda.

    Private Sub ActualizaDetalle()
    Dim a As Byte
    For a = 0 To 59

    cnn.Execute “UPDATE ORDENDETALLE set D = ‘” & TxtPD(a) & _
    “‘, C = ‘” & TxtPC(a) & _
    “‘, R = ‘” & TxtPR(a) & _
    “‘, P = ‘” & TxtPP(a) & _
    “‘ where NORDEN = ” & TxtNOrdenRep.Text & “”
    Next a
    End Sub
    Desde ya muchas gracias.

    • VideoTutoriales commented on 10 febrero, 2011 Reply

      Veamos, supongo que TxtPC(a) y las siguientes son las cajas, lo que no entiendo es para qué utilizas el index de cada caja de texto, es decir, si tienes un formulario con N cajas, todas las cajas deben de llevar el mismo nombre para que puedas acceder a ellas.

      Ahora mismo con ese código pienso que tienes 4 cajas de texto, TxtPD, TxtPC, TxtPR y TxtPP, y ¿cada una de ellas tienen 60 elementos? si fuera así, tal y como lo tienes estarías guardando el último elemento de las cajas, ya que TxtNOrdenRep.text es invariable, por lo que estás haciendo 60 consultas “where NORDEN = ” TxtNOrdenRep.Text, así que siempre se cumplirá la misma condición para guardar las 60 y por tanto irá guardando una encima de la otra hasta llegar a la última.

      Si me explicas mejor como lo tienes estructurado internamente y como quieres guardarlo te podré ayudar mejor.

      Un saludo!

  • Gustavo commented on 10 febrero, 2011 Reply

    Antes que nada muy agradecido de que respondas y le pongas interes a mi problema. Te cuento, El sistema guarda 60 registros con el mismo numero de una Orden de Trabajo (NORDEN) y con 240 opciones divididas en 4 campos.
    Estas opciones corresponden a partes de un automovil a ser reparado. Copio algunos registros desde la tabla real para ilustrar mejor la idea.
    ID NORDEN DOMINIO ZONA PIEZA D C R P
    122 2 GQN741 D D Paragolpe x x x
    123 2 GQN741 D D Panel de frente
    124 2 GQN741 D D Rejilla de Radiador x x x
    125 2 GQN741 D D Guardabarro Der.
    126 2 GQN741 D D Pasarueda Der.
    y asi hasta llegar a las 60 piezas con las posible reparaciones.

    El formulario tiene 5 matrices TxtPiezas,(TxtPD(0…59), TxtPC(0…59),TxtPR(0…59) , TxtPP(0…59).
    El punto es. Con el sistema puedo guardar en la tabla sin problemas (tal cual el ejemplo anterior) pero en caso de un cambio algunas veces necesito borrar algunas cruces (quitar de la orden de trabajo la reparacion de una pieza), o agregar otras cruces (al momento de la reparacion surgen otras piezas a reparar). y ahi es donde comienza el problema cuando hago un update, me modifica todo y el resultado es nefasto. Te adjunto el codigo que utilizo para grabar en la tabla, quizas te ayuda un poco a entenderme mejor.
    Private Sub GrabaDetalleOr()
    Dim Item As String

    Dim p As Byte

    For p = 0 To 59

    cnn.Execute “INSERT INTO ORDENDETALLE ” & “(NORDEN,DOMINIO,ZONA,PIEZA,D,C,R,P) VALUES(‘” & _
    TxtNOrdenRep & “‘,'” & _
    TxtDominio & “‘,'” & _
    Left(TxtPieza(p), 1) & “‘,'” & _
    TxtPieza(p) & “‘,'” & _
    TxtPD(p) & “‘,'” & _
    TxtPC(p) & “‘,'” & _
    TxtPR(p) & “‘,'” & _
    TxtPP(p) & “‘)”

    Next p

    End Sub
    Otra vez muchas gracias!!!!!!!

    • VideoTutoriales commented on 10 febrero, 2011 Reply

      Cuando realizas el update ¿qué es lo que te graba exactamente?

      Una solución rápida sería “delete from ordendetalle where txtnordenrep = ” & norden
      y luego GrabaDetalleOr()

      No es lo más optimo pero se arreglaría, de todas maneras dime qué es lo que te guarda al hacer el update, qué te cambia?

      De todas maneras pensando un poco más, creo que debias de haber separado las piezas en una tabla aparte y las relacionaras por el número de ordenes.

      Ya me cuentas, solo doy posibilidades, no sé por donde llevas el proyecto 🙂

  • Gustavo commented on 10 febrero, 2011 Reply

    Las letras D,C,R,P corresponden a (Desarmar, Cambiar, Reparar, Pintar)
    Cuando yo cargo por primera vez una orden para un vehiculo, el sistema genera En otra tabla (ORDENENCA) los datos del vehiculo y los costos. En una rutina siguiente agrega 60 registros nuevos en la tabla ORDENDETALLE,Marcando con una (x) las casillas correspondientes a la reparacion, y dejando en blanco las que no tienen reparacion. Recien ahi le damos ingreso al vehiculo al taller. Que pasa, en algunos casos luego de comenzar a reparar el auto, surgen cosas nuevas u otras no se reparan, lo que hace que el resultado de la reparcion difiera de la que grabamos en primera instancia.
    Ahora si la pregunta era que resultado arroja la rutina (que esta mal realizada) es el siguiente.
    Si yo borro un x (el error es. pone todos los campos de la tabla en blanco, cuando deberia solo corregir la que yo seleccione)
    Si marco con una x una que estaba en blanco (el error es. pone todos los campos de la tabla con una x, cuando deberia solo corregir la que yo seleccione).
    Si bien la posible solucion que me diste no es lo ideal, por el momento que que es la unica que veo viable, (eliminar todos los registros de la tabla y guardarlos nuevamente).
    Nuevamente muy agradecido por tu dedicacion.

    • VideoTutoriales commented on 10 febrero, 2011 Reply

      Según tu consulta de actualización:
      UPDATE ORDENDETALLE set D = ‘” & TxtPD(a) & _
      “‘, C = ‘” & TxtPC(a) & _
      “‘, R = ‘” & TxtPR(a) & _
      “‘, P = ‘” & TxtPP(a) & _
      “‘ where NORDEN = ” & TxtNOrdenRep.Text & “”

      Solo estás tomando NORDEN para definir que cambiar, en cambio deberías de tomar tambien algún campo más, si tienes -> ID NORDEN DOMINIO ZONA PIEZA D C R P
      No puedes solo tomar Norden cuando esa orden la utilizas para diferentes zonas/piezas, tendrás que buscar otro campo que determine que quieres cambiar solo ese campo, lo que estás haciendo es poner el valor a todos los que sean de esa orden. De otra manera y con código:

      “UPDATE ORDENDETALLE set D = ‘” & TxtPD(a) & _
      “‘, C = ‘” & TxtPC(a) & _
      “‘, R = ‘” & TxtPR(a) & _
      “‘, P = ‘” & TxtPP(a) & _
      “‘ where NORDEN = ” & TxtNOrdenRep.Text & “ and zona = ‘Paragolpe’”

      Simplemente tienes que ser más específico.
      No sé si me expliqué bien. Pero me cuentas 🙂

  • Gustavo commented on 10 febrero, 2011 Reply

    Excelente amigo!!!!! a funcionado a la perfeccion!!!! realmente ahora viendolo tal como lo escribiste era un problema realmente muy sencillo, no puedo creer que he estado varios dias con este problema tan simple.
    No se como agrader tu tiempo, tu dedicacion y tan buena onda.
    te dejo mi mail, para lo que pueda ayudarte. gustavocarranza[arroba]gmail.com
    una vez mas muchas gracias!!!!!

    • VideoTutoriales commented on 11 febrero, 2011 Reply

      De nada, 4 ojos ven más que 2.

      Puedes twittearme, menearme o facebookearme para agradecermelo.

      Te tomo en cuenta, es posible que podamos hablar, ya que veo que tienes conocimientos en vb6.

      Un saludo!

  • fanny(: commented on 26 mayo, 2011 Reply

    hola! soy estudiante de preparatoria & estamos viendo visual basic D: lo cual para mi es super dificil no compredo muy bien eso y menos lo de los bucles t.t bueno el caso es qe ahora me dejaron hacer un programa que imprima en una caja de texto el cubo de los numeros del 1 al 20 pero no se muy bien como hacerlo, buenoo tego una idea de como empezar pero no se muy bienD: podrian ayudarme?(: por favor! gracias ñ.ñ’

    • VideoTutoriales commented on 26 mayo, 2011 Reply

      Bueno, lo primero es saber qué es lo que tienes que hacer, en este caso, el cubo de los números del 1 al 20…
      1 * 1 * 1
      2 * 2 * 2

      20 * 20 * 20

      Entonces a partir de ahí empezamos a verlo para reducir el trabajo y programarlo de manera sencilla. Sabemos que debemos de repetir la operación de 1 a 20 por lo que usaremos un for next y que necesitamos multiplicar la variable del for next y multiplicarla a si misma por tres, primero damos el paso en lenguaje natural

      Repito num = 1; desde 1 a 20
      muestro = num * num * num;
      fin repito

      Creo que con eso ya lo tendrás claro, sino vuelveme a preguntar y vemos donde tienes las dudas.

      Un saludo!

  • hector commented on 16 junio, 2011 Reply

    For I = 1 To I Step 1
    lstordenes.AddItem I
    Next I
    End Sub
    como le hago para k me ponga en una lista 1 2 3 4 ect
    porfas

    • VideoTutoriales commented on 16 junio, 2011 Reply

      Buenas Hector

      La metodología está bien, solo que has realizado el bucle con respecto al valor de I

      Hacer I = 1 hasta I (que vale 0) avanza 1
      añade un item con valor I
      repite I

      Como el hasta I vale 0, añadirá solo un valor, para que quede correcto tendrás que cambiar ese valor y poner las veces que quieras, por ejemplo:

      For I = 1 To 4 Step 1
      lstOrdenes.AddItem I
      Next I

      Con esto ya lo tendrías listo

  • adan commented on 23 mayo, 2012 Reply

    hola mi nombre es adan y estudio la preparatoria en informatica y algunas veces me surge problemas para usar while wend y quisiera saber si me podrian dar una ayudadita. y por cierto muy excelentes sus explicaciones para resolver los problemas.

    • VideoTutoriales commented on 23 mayo, 2012 Reply

      Buenas Adan

      Lo que tienes que tener en cuenta es que el bucle while – wend, hace la pregunta antes de entrar en el bucle.

      Mientras (ocurra esto)
      secuencia de operaciones/funciones
      repetir

      No sé si te resuelve alguna duda, aunque si estás empezando a programar, te aconsejo que traduzcas a lenguaje natural, te resultará más sencillo entenderlo.

      Un saludo!

  • dani commented on 5 junio, 2012 Reply

    hola buena tarde m puedes dar un ejemplo de for next pero bien estructurado es decir k m diga dim elefante 1 to 5 o algo x el stilo sk n se como va stoy studiando m dejaron investigar 1 ejemp pero no encuentro xfa gracias de ante mano jeje

    • VideoTutoriales commented on 5 junio, 2012 Reply

      En el ejemplo lo tenemos con la estructura básica. Lo que me estás comentando de Dim es declaración de variables. Si lo que quieres es copiar y pegar el código, solo tienes que añadir una linea más al segundo código propuesto. Por ejemplo:

      Dim contador as integer

      For contador = 0 to 10 step 2

      msgbox “El valor de contador ahora es: ” & contador

      Next contador

      Espero que resuelva tu duda, sino aquí me tienes para continuar ayudándote 😉

  • Dani commented on 12 junio, 2012 Reply

    mm ps muchas gracias me ayudo mucho y si no es molestia me puedes dar otro jeje x fa 😉

    • VideoTutoriales commented on 13 junio, 2012 Reply

      No sé que es lo que quieres que te deje. ¿Algún ejemplo más sobre el bucle en vb6?

  • william commented on 27 septiembre, 2012 Reply

    ¡Gracias! que forma más sencilla de explicarlo realmente fue muy fácil y rápido entenderlo. Te agradezco. Dtb!

    • VideoTutoriales commented on 27 septiembre, 2012 Reply

      Me alegro que te sirva 🙂 En realidad un Bucle For next en Vb6 es muy parecido a los diferentes lenguajes que existen.

      Un saludo!

  • Jossue commented on 5 octubre, 2012 Reply

    Hola que tal, me podrias ayudar lo que pasa que me dejaron de tarea hacer una aplicacion donde pueda comparar 20 numeros y me diga cual es el numero mayor y cual el menor, todo esto usando el for, porfavor ando atoradisimo

  • Ruben commented on 1 noviembre, 2012 Reply

    Bueno quisiera que me ayudara con este problema:
    Elaborar un programa que imprima todos los números primos que se encuentran entre dos valores, así mismo imprimir la suma respectiva.Muy agradecido si lo respondiera…

  • VideoTutoriales commented on 2 noviembre, 2012 Reply

    Al ser una respuesta extensa, creé un nuevo tuto:
    http://www.vertutoriales.com/index.php/saber-numeros-primos-entre-dos-valores-dados-metodologia/

    Espero que te sirva. Un saludo!

  • oneyda commented on 22 noviembre, 2012 Reply

    hola muy buenos tus comentarios y kiero k me ayudes como hacer un programa que muestre los datos de un cliente y aparezcan en una lista plis te lo agradecere.

  • oneyda commented on 22 noviembre, 2012 Reply

    en este programa tenemos que agregarle msgbox,inputbox y no se como aser estoy confundida

  • sandi commented on 18 octubre, 2013 Reply

    hola sera que me podrian ayudar hacer un for , pero que me tire estos numeros 1 3 5 7 9 11 etc en celdas de excel . siempre y cuando programando en visual basic de excel.

    • VideoTutoriales commented on 18 octubre, 2013 Reply

      Buenas, pues tal y como lo tienes aquí te valdría, solo poniendo que
      for x = 1 to n step 2
      //aquí el codigo de inserción en excel con el valor de x
      next n

  • ChGarcia commented on 20 enero, 2015 Reply

    Amigo Buen dia.
    Espero me explique.
    Tengo una tabla elaborada y en la primera columna estan las claves (por ej BA001, MA001, MO001, BA002, MA002 ……….mo0100), Con Find encuentro las que comienza con “BA” y me dice por ejemplo que encontro 15, en la ventana que despliega. El asunto es que lo quiero llevar a otra tabla digamos de resumen donde nada mas estan los “BA”,uedo poner la que encontro primera ……….el problema es como le hago para pongas las “siguientes ” (Next) “BA”. For….. Next no me ha funcionada. Puede ayudarme ??
    Te dejo la secuencia. Me repite el mismo.
    For i = 1 To 30
    i = 1 + i
    Cells.Find(What:=”BA”, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
    xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
    True, SearchFormat:=False).Activate
    Cells.FindNext(After:=ActiveCell).Activate
    Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(0, 5)).Select
    Selection.Copy
    Range(“AA5”).End(xlDown).Offset(1, 0).Select
    ActiveSheet.Paste Link:=True
    Range(ActiveCell.Offset(0, 3), ActiveCell.Offset(0, 4)).Select
    Selection.ClearContents
    Range(“AA4”).Select
    Next i

    • videotutoriales commented on 20 enero, 2015 Reply

      Por lo que estoy viendo, ¿estás utilizando VBA no? O en su caso estás accediendo a una tabla de Excel… veamos, no te puedo dar el código exacto ya que no entiendo exactamente lo que estás haciendo, pero una forma que podrías hacer sería la siguiente:

      Para utilizar el bucle for-next deberás primero saber cuantos registros aparecen (comentas que te devuelve 15) Entiendo que es con Cells.Find(What:=”BA”), Así que el bucle sería for i = 0 to 15. A continuación estás poniendo un i = i + 1, esto no puedes utilizarlo o no debes utilizarlo, ya que el propio bucle for-next ya te incrementa 1 automáticamente en cada iteración.

      Luego lo que deberás recorrer son los registros devueltos por esa búsqueda que estás utilizando con cells.findNext. Te dejo el ejemplo en pseudocódigo:

      registrosConBA = cells.find(BA)

      for x = 1 to TotalRegistrosConBa
      guardaEnOtraTabla siguiente registrosConBA
      next x

      Espero que te ayude. Cualquier nueva consulta por aquí me tienes.
      Un saludo!

  • sara commented on 2 abril, 2016 Reply

    hola en realidad me urge un concepto concreto de el ciclo for .. alguien puede ayudarme gracias

    • Carlos Dk commented on 4 abril, 2016 Reply

      Si lanzas la pregunta… sobre el bucle for…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *