Excel - Macro parra pasar a la siguiente fila

 
Vista:
sin imagen de perfil
Val: 19
Ha disminuido su posición en 7 puestos en Excel (en relación al último mes)
Gráfica de Excel

Macro parra pasar a la siguiente fila

Publicado por Jorge Luis (43 intervenciones) el 22/03/2013 15:53:32
estoy haciendo un ejercicio en el cual me piden el ingreso de datos, he escrito el código para que me llene los datos que me piden pero no se como una vez termine de llenar la primera fila como paso a la segunda y tercera fila y como hallo el promedio del Costo Promedio
Su ayuda por favor

Sub almacen()
Dim code As String
Dim descri As String
Dim precio As String
Dim pausa As String
Dim prom As String
Dim i As Integer


'Call Titulo_Cervantes ( Este código abajo señalado lo he hecho con una macro grabada , pero se puede hacer con un código mas corto pero me lo pidieron así )

Range("B4").Select
ActiveCell.FormulaR1C1 = "Código Producto"
Range("C4").Select
ActiveCell.FormulaR1C1 = "Descripción"
Range("D4").Select
ActiveCell.FormulaR1C1 = "Precio Costo"
Range("B4:D4").Select
Selection.Font.Bold = True
Selection.Font.Italic = True
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("B5").Select
pausa = InputBox("¿Desea ingresar información? si/no:")
Do While pausa = "si"

code = InputBox("Ingrese el código del Producto: ")
Range("A5").Value = code

descri = InputBox("Ingrese la Descripción del Producto: ")
Range("B5").Value = descri

precio = InputBox("Ingrese el Precio Costo del : ")
Range("C5").Value = precio

pausa = InputBox("¿Desea continuar? si/no:", "Control")



Loop

'Como hallo el promedio de la columna precio si son tres o mas filas


End Sub
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
Imágen de perfil de Cacho
Val: 81
Ha disminuido 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Macro parra pasar a la siguiente fila

Publicado por Cacho (66 intervenciones) el 22/03/2013 20:46:44
Hola! Jorge. Del siguiente código:

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
35
36
37
38
39
40
41
42
Sub almacen()
Dim pausa As String
Dim prom As Double, i As Long
 
'Call Titulo_Cervantes (Este código abajo señalado lo he hecho con una macro grabada , pero se puede hacer con un código mas corto pero me lo pidieron así)
With [b4:d4]
  .Value = Array("Código Producto", "Descripción", "Precio Costo")
  .Font.Bold = True
  .Font.Italic = True
  .HorizontalAlignment = xlCenter
  .VerticalAlignment = xlCenter
  .WrapText = True
  .Orientation = 0
  .AddIndent = False
  .IndentLevel = 0
  .ShrinkToFit = False
  .ReadingOrder = xlContext
  .MergeCells = False
 
  With .Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 5296274
    .TintAndShade = 0
    .PatternTintAndShade = 0
  End With
End With
 
i = Cells(Rows.Count, "d").End(xlUp).Row
Do
  pausa = InputBox("¿Desea ingresar información? si/no:", "Control")
  If LCase(pausa) <> "si" Then Exit Do
  i = 1 + Cells(Rows.Count, "d").End(xlUp).Row
  Cells(i, "b").Value = InputBox("Ingrese el código del Producto: ")
  Cells(i, "c").Value = InputBox("Ingrese la Descripción del Producto: ")
  Cells(i, "d").FormulaLocal = InputBox("Ingrese el Precio Costo del : ")
Loop
 
prom = 0
If i > 4 Then prom = WorksheetFunction.Average([d5].Resize(i - 4))
MsgBox "Promedio: " & prom
End Sub


te sugiero analizar:

- "Range" no es la única forma de referir a una celda (o a un rango de celdas). Te muestro dos formas más. ¿Cuál debes utilizar en cada momento?... ¡La que te resultare más práctica para lo que pretendes hacer!

- El promedio de la columna "Costo" lo calculo a partir del uso de la función de Excel Promedio, y allí es donde intervienen el WorksheetFunction y el Average.

- En tu código original, si respondías SI (en mayúsculas) te lo interpretaba como "no": fíjate la forma de evitar esa dificultad.

- Finalmente te sugiero que trates de entender -definitivamente- para que sirven los With - End With: ¿Notaste la cantidad de líneas depuradas -tan solo- haciendo un correcto uso de este recurso?

Salujdos, 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
sin imagen de perfil
Val: 19
Ha disminuido su posición en 7 puestos en Excel (en relación al último mes)
Gráfica de Excel

Macro parra pasar a la siguiente fila

Publicado por Jorge Luis (43 intervenciones) el 23/03/2013 21:29:01
Gracias Cacho por sugerencias, efectivamente el código se hace mas simple con With - End With y la WorksheetFunction que me servirán para hallar el promedio , max, min, etc.
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