Sei sulla pagina 1di 13

Codigos Excel

Voy a darte el primer empujn:


En primer lugar create un botn (commandbutton1) e insrtale el siguiente cdigo:
Private sub commanbutton1_click()
userform1.show 'estas 3 lineas son para que se muestre el form que has hecho tu
end sub
Suponiendo que queremos empezar a meter datos en A2 de la hoja1, puesto que la
primera fila es donde tenemos la cabecera (nombre, datos1, datos2, etc) y que tenemos
un userform con 5 textbox para introducir datos y un botn en el form para guardar,
escribimos el siguiente cdigo en el botn guardar:
Private Sub CommandButton1_Click()
Sheets("hoja1").Select 'selecciona la hoja "datos"
Range("A1").Select 'selecciona el rango (en este caso la celda) "A1"
Do While Not IsEmpty(ActiveCell) 'encuentra la ultima celda con datos
ActiveCell.Offset(1, 0).Select 'en la ultima celda con datos, muevete una fila abajo
Loop 'bucle
ActiveCell = TextBox1 'copia el contenido del textbox1 a la celda activa
ActiveCell.Offset(0, 1).Select 'muevete en la misma fila, una columna a la derecha
ActiveCell = TextBox2 'copia el contenido del textbox2 a la celda activa
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox3
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox4
ActiveCell.Offset(0, 1).Select
ActiveCell = TextBox5
ActiveCell.Offset(0, 1).Select
TextBox1 = Empty 'textbox1, dejar en blanco
TextBox2 = Empty 'etc
TextBox3 = Empty
TextBox4 = Empty

TextBox5 = Empty
MsgBox "Datos guardados" 'mostrar el mensaje "Datos guardados"
End Sub
Todo esto suponiendo que el form se llama "userform1", el botn "commandbutton1, y
los textbox1, 2,3 etc.
Acomoda esto a tu hoja y seguimos viendo a ver que tal.
el 3 mar. 11

Estimado, muchas gracias por la ayuda me ha servido todo...


Pero aun tengo que seguir modificando... tengo 2 consultas, la primera:
Tengo en la celda a1 (Local) en la celda b1 (producto) y en la c1 (cantidad) [estos serian
los nombres de cabezera] al ingresar los datos en el UserForm ingreso solo una vez el
local y varios productos con sus respectivas cantidades.
[Local][Producto][Cantidad]
[5251][1010002][

200]

][1010078][

150]

][1010096][

100]

ETC...
Lo que necesito es que al presionar el botn grabar se auto-complete hacia abajo hasta
donde llegan las otras cantidades.
La segunda es:
Al momento de ingesar un cdigo manual de producto en un TextBox necesito que en
un Label (no se si sera ese) me de una denominacin como la frmula Buscar. Ejemplo.
[Producto][Denominacin]
[1010002][Pollo con men]
Estimado, quedo atento... y Gracias por la ayuda!
Atentamente.
Patricio Espinosa.
el 3 mar. 11

Podras jugar con el cdigo:


ActiveCell.Offset(0, 1).Select
Que sirve para moverte por las celdas de excel, el anterior cdigo quiere decir que en la
misma fila, se mueva una columna hacia la derecha, es decir, si la ltima celda
seleccionada fue A6, ahora le hemos dicho que se site en A7 y despus:
ActiveCell = TextBox1
es decir, que en la celda activa copie el contenido del textbox1.
Pues bsicamente sera lo mismo, pero movindote fila arriba o abajo. Ejemplos:
activecell.offset(1, 0).select
significa que se mueva una fila abajo en la misma columna
ActiveCell.Offset(1, 1).Select
significa que se mueva una fila abajo y una columna a la derecha
ActiveCell.Offset(0, -1).Select
Significa que se mueva una columna a la izquierda
etc.
Acopla esto a tu proyecto y en cuanto pueda te comento lo de buscar la denominacin
del producto segn referencia.

OTRO CODIGO PARA MODIFICAR


http://blogs.itpro.es/exceleinfo/2012/07/07/modificar-datos-de-una-tabla-con-un-listbox-enexcel/

Formularios para bsqueda, alta,


baja y actualizacin de registros en
Excel
BY SERGIO ALEJANDRO CAMPOS MARCH 29, 2014

En este ejemplo les comparto algunos formularios con las acciones ms comunes
y solicitadas al momento de manejo de registros en bases de datos.
1. Bsqueda.
2. Alta.
3. Baja.
4. Actualizacin.
Tenemos una tabla con los encabezados ID, USARIO, DEPARTAMENTO y
PUESTO, donde obligatoriamente el ID debe ser un registro nico para que todas
las acciones funcionen bien.
El primer formulario tendr las acciones de ALTA y BUSCAR.

Figura 1. Acciones de Alta y bsqueda.

Alta de registros
Al presionar el botn Alta se mostrar el segundo formulario para dar de alta
datos en la tabla. Este formulario tiene la capacidad de detectar si el ID est dado
de alta en la tabla y no podremos dar de alta el registro a menos que indiquemos
otro ID.

Figura 2. No se podr registrar un ID duplicado.

Bsqueda de registros
Al registrar un ID que no est repetido en la tabla, ahora procedemos a dar click
en el botn Buscar del formulario de acciones.
La bsqueda se hace por departamento y sta usa un operador LIKEpara
encontrar todos los registros similares, es decir, que contengan el texto a buscar.
Al filtrar nuestra bsqueda en el ListBox se mostrarn todos los resultados que
coinciden con el texto buscado.

Figura 3. Resultado de la bsqueda en un ListBox.

Eliminar registros
Al tener el filtro con los resultados devueltos podemos elegir cualquiera de la
lista y al presionar Eliminar se dar de baja el registro en la base de datos.

Actualizar registros
De la misma manera en que podemos eliminar registros, si damos click en el
botn Modificar se mostrar otro formulario donde podremos modificar los
campos del registro seleccionado.

Figura 4. Actualizacin de datos.

Cdigo de las macros


Alta de registros
'Alta de un registro
Private Sub CommandButton1_Click()
'Declaracin de variables
'
Dim strTitulo As String
Dim Continuar As String
Dim TransRowRng As Range
Dim NewRow As Integer
Dim Limpiar As String
'
strTitulo = "EXCELeINFO"
'
Continuar = MsgBox("Dar de alta los datos?", vbYesNo + vbExclamation, strTitulo)
If Continuar = vbNo Then Exit Sub
'
Cuenta = Application.WorksheetFunction.CountIf(Range("A:A"), Me.txtID)
'
If Cuenta > 0 Then
'
MsgBox "El ID '" & Me.txtID & "' ya se encuentra registrado", vbExclamation, strTitulo
'
Else

'
Set TransRowRng = ThisWorkbook.Worksheets("Hoja1").Cells(1, 1).CurrentRegion
NewRow = TransRowRng.Rows.Count + 1
With ThisWorkbook.Worksheets("Hoja1")
.Cells(NewRow, 1).Value = Me.txtID
.Cells(NewRow, 2).Value = Me.txtUsuario
.Cells(NewRow, 3).Value = Me.txtDepartamento
.Cells(NewRow, 4).Value = Me.txtPuesto
End With
'
MsgBox "Alta exitosa.", vbInformation, strTitulo
'
Unload Me
End If

Bsqueda de registros
'Abrir el formulario para modificar
Private Sub CommandButton3_Click()
If Me.ListBox1.ListIndex < 0 Then
MsgBox "No se ha elegido ningn registro", vbExclamation, "EXCELeINFO"
Else
frmModificar.Show
End If
End Sub
'
'Eliminar el registro
Private Sub CommandButton4_Click()
Pregunta = MsgBox("Est seguro de eliminar el registro?", vbYesNo + vbQuestion, "EXCELeINFO")
If Pregunta <> vbNo Then
ActiveCell.EntireRow.Delete
End If
Call CommandButton5_Click
End Sub
'
'Mostrar resultado en ListBox
Private Sub CommandButton5_Click()
On Error GoTo Errores
If Me.txtFiltro1.Value = "" Then Exit Sub
Me.ListBox1.Clear
j = 1
Filas = Range("a1").CurrentRegion.Rows.Count
For i = 2 To Filas

If LCase(Cells(i, j).Offset(0, 2).Value) Like "*" & LCase(Me.txtFiltro1.Value) & "*"


Then
Me.ListBox1.AddItem Cells(i, j)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Cells(i, j).Offset(0, 1)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Cells(i, j).Offset(0, 2)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = Cells(i, j).Offset(0, 3)
Else
End If
Next i
Exit Sub
Errores:
MsgBox "No se encuentra.", vbExclamation, "EXCELeINFO"
End Sub
'
'Activar la celda del registro elegido
Private Sub ListBox1_Click()
Range("a2").Activate
Cuenta = Me.ListBox1.ListCount
Set Rango = Range("A1").CurrentRegion
For i = 0 To Cuenta - 1
If Me.ListBox1.Selected(i) Then
Valor = Me.ListBox1.List(i)
Rango.Find(What:=Valor, LookAt:=xlWhole, After:=ActiveCell).Activate
End If
Next i
End Sub
'
'Dar formato al ListBox y traer datos de la tabla
Private Sub UserForm_Initialize()
For i = 1 To 4
Me.Controls("Label" & i) = Cells(1, i).Value
Next i
With ListBox1
.ColumnCount = 4
.ColumnWidths = "60 pt;60 pt;60 pt;60 pt"
End With
End Sub

Actualizar registros
'Actualizar el registro
Private Sub CommandButton1_Click()
For i = 1 To 4

ActiveCell.Offset(0, i - 1).Value = Me.Controls("TextBox" & i).Value


Next i
Unload Me
End Sub
'
'Llenar los cuadro de texto con los datos del registro elegido
Private Sub UserForm_Initialize()
For i = 1 To 4
Me.Controls("TextBox" & i).Value = ActiveCell.Offset(0, i - 1).Value
Next i
End Sub

Anexos
:: Descargar el ejemplo Alta, Baja y actualizacin de registros con bsqueda en
ListBox.rar
Comparte:

Facebook2

Twitter

Google

LinkedIn

Email

Like this:

Modificar datos de una tabla con un


ListBox en Excel
BY SERGIO ALEJANDRO CAMPOS 7 JULY, 2012

Este tema ya lo vena pensando a raz de varias consultas en el Blog, y bueno, me


di a la tarea de preparar un ejemplo sencillo, pero que puede servir de base para
proyectos ms ambiciosos.
El ejemplo tiene una tabla la cual se mostrar en un ListBox que est en un
formulario. Para efecto de modificar los datos de cada registro, basta con elegir
uno de ellos y presionar el botn Modificar y lanzar otro formulario donde se
podrn actualizar los datos.
Al igual tambin cuenta con un botn de Eliminar para eliminar la fila donde est
el registro,
Imagen del formulario

Cdigo del formulario para mostrar datos


'Cerrar formulario
Private Sub CommandButton2_Click()
Unload Me
End Sub
'
'Abrir el formulario para modificar
Private Sub CommandButton3_Click()
If Me.ListBox1.ListIndex < 0 Then
MsgBox "No se ha elegido ningn registro", vbExclamation, "EXCELeINFO"
Else
Modificar.Show
End If
End Sub

'
'Eliminar el registro
Private Sub CommandButton4_Click()
Pregunta = MsgBox("Est seguro de eliminar el registro?", vbYesNo + vbQuestion, "EXCELeINFO")
If Pregunta <> vbNo Then
Fila = Me.ListBox1.ListIndex + 2
Rows(Fila).Delete
Application.ScreenUpdating = True
End If
End Sub
'
'Activar la celda del registro elegido
Private Sub ListBox1_Click()
Fila = Me.ListBox1.ListIndex + 2
For i = 1 To 4
Cells(Fila, 1).Activate
Next i
End Sub
'Dar formato al ListBox y traer datos de la tabla
Private Sub UserForm_Initialize()
With ListBox1
.ColumnCount = 4
.ColumnWidths = "60 pt;60 pt;70 pt"
.ColumnHeads = True
End With
ListBox1.RowSource = "Tabla1"
End Sub

Cdigo del formulario para modificar


'Actualizar el registro
Private Sub CommandButton1_Click()
For i = 1 To 4
ActiveCell.Offset(0, i - 1).Value = Me.Controls("TextBox" & i).Value
Next i
Unload Me
End Sub
'
'Cerrar formulario
Private Sub CommandButton2_Click()
Unload Me
End Sub
'
'Llenar los cuadro de texto con los datos del registro elegido

Private Sub UserForm_Initialize()


For i = 1 To 4
Me.Controls("TextBox" & i).Value = ActiveCell.Offset(0, i - 1).Value
Next i
End Sub

Potrebbero piacerti anche