Excel - Uso de for next

   
Vista:

Uso de for next

Publicado por Jorge Luis (35 intervenciones) el 15/03/2013 17:46:01
he creado esta macro pero tengo otras formas de hacerlo, pero me indican que asi debe ser , lo que paso es que al escribir los datos en los cuadros no lo escribe, he probado con varias líneas de código pero ya estoy varias horas y no me sale
No explico porque
Sub Notas()

Dim i As Integer
Dim Acumula As Integer
Dim Total As Integer
Dim Prom As Integer

Range("A1").Value = "Nota1"
Range("A2").Value = "Nota2"
Range("A3").Value = "Nota3"
Range("A4").Value = "Promedio"

For i = 1 To 3
Acumula = InputBox("Ingrese la nota: " & i, "Ingreso de Notas")
Total = Total + Acumula
Next i

Prom = Total / (i - 1)

ActiveSheet.Range("B4").Value = Prom

End Sub

Gracias por su apoyo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Uso de for next

Publicado por Jorge Luis (35 intervenciones) el 16/03/2013 02:57:22
Los valores que ingreso en el INPUTBOX que tiene la variable I se deberian escribir con la macro en la Fila B1, B2 y B3, pero corro la macro y no aparece nada. No se donde esta mal.
Envio la macro hecha.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Sub Notas()
 
Dim i As Integer
Dim Acumula As Integer
Dim Total As Integer
Dim Prom As Integer
 
Range("A1").Value = "Nota1"
Range("A2").Value = "Nota2"
Range("A3").Value = "Nota3"
Range("A4").Value = "Promedio"
 
For i = 1 To 3
 
    Acumula = InputBox("Ingrese la nota: " & i, "Ingreso de Notas")
 
    ActiveSheet.Range("B1").Select
    ActiveSheet.Range("B1").Value = Acumula
 
    ActiveSheet.Range("B2").Select
    ActiveSheet.Range("B2").Value = Acumula
 
    ActiveSheet.Range("B3").Select
    ActiveSheet.Range("B3").Value = Acumula
 
    Total = Total + Acumula
Next i
 
 
Prom = Total / (i - 1)
 
ActiveSheet.Range("B4").Value = Prom
 
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Uso de for next

Publicado por jcs (494 intervenciones) el 16/03/2013 09:46:37
Muy buenas.

Sí que te hace algo, otra cosa es que sea lo que necesitas. Te pone el valor de la última nota a las tres, aunque el promedio lo haga bien. El tema está en que, si utilizas bucles, tienes que actuar en consecuencia. La idea está bien. Tu macro está pasando tres veces por un sitio, pero luego esas tres veces hace lo mismo. Supongo que lo que quieres es que el bucle quede de la siguiente manera:

1
2
3
4
5
For i = 1 To 3
Acumula = InputBox("Ingrese la nota: " & i, "Ingreso de Notas")
Range("B" & i).Value = Acumula
Total = Total + Acumula
Next i


Un saludo. Juanjo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Uso de for next

Publicado por Jorge Luis (35 intervenciones) el 16/03/2013 15:41:31
Gracias Juanjo ya esperaba tu respuesta como siempre gracias a tu apoyo , Me parece que esta linea de código es la que hace que funcione bien

Range("B" & i).Value = Acumula

ya que el valor almacenado en i va variando por el for 1 to 3 hasta el next i

Gracias nuevamente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Uso de for next

Publicado por Jorge Luis (35 intervenciones) el 16/03/2013 17:30:21
Favor si quisiera que los datos se ingresaran ya no en vertival y no horizontal como cambiaria esta formula

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Notas()
 
Dim i As Integer
Dim Acumula As Integer
Dim Total As Integer
Dim Prom As Integer
 
Range("A1").Value = "Nota1"
Range("B1").Value = "Nota2"
Range("C1").Value = "Nota3"
Range("D1").Value = "Promedio"
 
For i = 1 To 3
Acumula = InputBox("Ingrese la nota: " & i, "Ingreso de Notas")
Range("B" & i).Value = Acumula
Total = Total + Acumula
Next i
 
Prom = (Total / (i - 1))
 
Range("D1").Value = Prom
MsgBox "El Promedio de las Notas es:  &Prom  "


Gracias Juanjo
la parte de la macro funciono muy bien
Me parece que el truco para que funcione en horizontal esta en esta línea
Range("B" & i).Value = Acumula
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Uso de for next

Publicado por jcs (494 intervenciones) el 17/03/2013 10:42:25
Muy buenas.

Perdona, pero no te entiendo. No sé que quieres decir con " ya no en vertival y no horizontal". Si lo que quieres decir es que vayan ingresándose hacia la derecha, prueba dentro del bucle algo así como:
cells(i,2).Value = Acumula

Un saludo. Juanjo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Uso de for next

Publicado por Cacho (44 intervenciones) el 22/03/2013 05:14:51
Hola! Jorge (y Juanjo)
Me sorprende que en tu código no tengas prevista la opción de otro tipo de notas que no sean números enteros (Integer).
Por ello, y por si deseas experimentar con otras alternativas para lograr lo mismo, podrías intentar con:

1
2
3
4
5
6
7
8
9
Sub Notas()
Dim C As Range
[a1:d1] = Array("Nota1", "Nota2", "Nota3", "Promedio")
For Each C In [a2:c2]
  C.FormulaLocal = InputBox("Ingrese la Nota" & C.Column, "Ingreso de Notas")
Next C
[d2] = WorksheetFunction.Average([a2:c2])
MsgBox "El promedio de las notas es: " & [d2]
End Sub


Saludos, Cacho R.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar