02/07/2010, 07:17
|
| | | Fecha de Ingreso: marzo-2007 Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 9 meses Puntos: 88 | |
Macro VBA Excel Hola! KonnaN. Al mirar el código que tienes:
Código:
Private Sub btn_insertar_Click()
Dim marca As String
Dim maxrow As Double
marca = txt_insertar_marca.Value
maxrow = maxrow = Cells.SpecialCells(xlLastCell).Row + 1
With Range("b" & Rows.Count).End(xlUp).Offset(1)
.Value = 1 + .Offset(-1)
.Offset(, 1) = txt_insertar_marca.Value
End With
Cells(maxrow, 3) = marca
End Sub
y compararlo con el código que te sugerí, se advierten 5 líneas de más:
Código:
Dim marca As String
Dim maxrow As Double
marca = txt_insertar_marca.Value
maxrow = maxrow = Cells.SpecialCells(xlLastCell).Row + 1
Cells(maxrow, 3) = marca
Ello me indica que te encuentras en los niveles iniciales del tema, y ése es un dato muy importante de conocer.
En efecto: al saberlo, no doy por sentado que conoces ciertas cuestiones básicas y -por el contrario- te las explico.
Por ejempo: hubiese sido muy importante que aclararas que en la fila 2 tienes los encabezados de columna.
Al saberlo, te hubiese sugerido lo siguiente:
Código:
Private Sub btn_insertar_Click()
With Range("b" & Rows.Count).End(xlUp)
.Offset(1) = 1 + IIf(IsNumeric(.Cells), .Cells, 0)
.Offset(1, 1) = txt_insertar_marca
End With
End Sub
COMENTARIOS
- Range("b" & Rows.Count).End(xlUp)
Localiza la última celda ocupada de la columa B
- .Offset(1)
Es la celda inmediata inferior a la anterior
- IsNumeric(.Cells)
Esta función devuelve Verdadero ó Falso según si la última celda ocupada de la columna B se puede evaluar como un número.
- IIf()
Es la clásica función SI() ó IF() del Excel. Como se ve: si la última celda ocupada de la columna B es numérica, obtenemos su valor. Y si no es numérica (o sea que estamos viendo el encabezado de columna), obtenemos un cero.
- .Offset(1, 1)
Respecto de la última celda ocupada de la columna B, esta celda está una fila abajo y una columna a su derecha.
Espero que te haya sido de utilidad.
Saludos, Cacho. |