Excel vba para crear sistema de facturación y consejos de ahorro de remesas 3708
2. ¿Dos interfaces?
1. Interfaz de entrada de datos: la función de front-end utiliza esta interfaz para implementar "ingresar, guardar, consultar, borrar y modificar"
2. datos en segundo plano; interfaz de entrada:
En tercer lugar, el método de implementación es 1. Función de guardado Sub Save()'?
Guardar datos Marco, producido por Little Monkey, hora 2013-9-5'?
¿Dimr1, R2, R3 como rangos con tablas ("almacenamiento de datos")?
Establezca r2 =. ¿El rango("a2",[a100000].End(xlUp)) termina en?
¿Con tablas ("entrada de datos")? Establezca r1 =. ¿Rango("c4:e4,d6:l39 ")?
Si está vacío(.range ("C4")) o isempty(.range ("E4")) entonces 'o isempty(.range ("B7:b41")) el nuevo departamento no está vacío . MsgBox fallido ("¡La codificación y el nombre están vacíos y no se pueden guardar!")?
Establezca r3 = r2. Find(.Cells(4,3),,,1) Si no es r3, ¿entonces no es nada?
MsgBox("Este código ya existe y no se puede guardar. Si necesita modificar esta información, haga clic en "Consultar antes de modificar")
¿Qué más?
Tabla de trabajo("datastore").InsertShift: = xldown("c6:l39"). ¿Copiar entrada de datos? p>
range("C2:L2"). )?
hoja("A2:A35"). pegar pasta especial:=xlpastevalues? copiar?
Hoja de trabajo("B2:B35"). ¿Borrar la interfaz de entrada después de guardar los datos?
). Fin si finaliza con la función de consulta final Sub consulta ()
Filtro de consulta. macro, producida por Xiaohou, hora 2013-9-5 ' '?
¿Dimerow como entero r1, R2 como rango con hoja de trabajo ("entrada de datos")? /p>
Erow = Sheets("Almacenamiento de datos"). [a100000]. Fin (xlUp). Borrar contenido
Para cada entrada. a2:x2]?
Si ce lt gt"" entonces ce Value = " * " ampce amp "*" ? 'Agregar comodín * para implementar la consulta difusa
¿Siguiente?
Si IsEmpty(.Range("c4")) o IsEmpty(.Range("e4")) entonces
O IsEmpty (.
Range("b7:b41")) no pudo agregar el departamento si no está vacío.
MsgBox("¡La codificación y el nombre están vacíos y no se pueden consultar!")?
Hoja de trabajo ("Almacenamiento de datos"). rango(" a 1: l "; Erow). Operación de filtro avanzado: =xlFilterCopy, CriteriaRange: =_. [c3:e4],CopiarAlRango:=. [A5:l5], único: = falso?
r2. borde (xlDiagonalAbajo). LineStyle = xlNinguno r2. borde(xlDiagonalArriba). LineStyle = xlNinguno
r2. borde (xlEdgeLeft). LineStyle = xlNinguno
r2. Borde (xlEdgeTop). LineStyle = xlNinguno
r2. Borde (xlEdgeBottom). LineStyle = xlNinguno
r2. borde (xlEdgeRight). LineStyle = xlNinguno r2. borde (xlInsideVertical). LineStyle = xlNinguno
r2. borde (xlInsideHorizontal). LineStyle = xlNinguno
r2. numberformatlocal = ";;"
Para cada ce en. [a2:x2]?
Si ce lt gt" "entonces ce. ¿Valor = Medio(ce, 2, Len(ce) - 2)? '¿Cancelar el comodín "*"?
¿Siguiente? Finalizar si finalizar con End Sub
3.Actualizar Sub Update()'?
¿Macro de actualización, producida por Xiaohou, hora 2013-9-5?
¿Dim arr,d como objeto?
¿Dim r As rango?
Atenuar lr amp, I amp, j?
Utilice la consulta Hojas ("entrada de datos") para modificar el área de datos de la hoja de cálculo y escribirla en la matriz arr?
arr =. rango("A7:D" & rango("A65536").end(xlUp).fila)?
arr =. ¿Rango ("a6:l39")?
Supongamos r =. ¿Rango("d6:l39")?
Termina con...
Establecer d = createobject("Script.
¿Diccionario ")' define un objeto de diccionario?
¿Para que I = 1 enlace (arr)' fila por fila?
Si Len(arr(i, 2)) lt; gt0 luego 'volcar' la fila 'total', ¿cuáles son los datos del servicio de nombres?
Si d.exists(arr(i,1) &arr(i,2) y amparr(i,3) no están presentes )) entonces d(arr(i,1)&arr(i,2)&arr(i,3)) = arr(i,4)&Chr(9)&arr(i,5)_
ampChr(9) y amparr(i, 6) y ampChr(9) y amparr(i, 7) y ampChr(9) y amparr(i, 8) y ampChr(9) y amparr(i, 9 ) y ampChr(9) y amparr(i, 10) y ampChr(9) y amparr(i, 11) amp Chr(9) y amparr(i, 12)
La última oración: Si el diccionario que conecta las cadenas de codificación y nombre no existe (la primera vez que aparece, el juicio aquí puede ser redundante), la cadena se agrega al valor de la clave del diccionario y los campos de atributos relacionados posteriores se agregan a las entradas del diccionario a través de conexiones de pestañas . en.
¿Siguiente?
¿Con tabla("datastore")?
Fin("a100000") xlup).row 'datastoresheetdatarow?
.range("C2:D" amp; LR). "ClearContents" borra las celdas sin fórmulas. :l" & Lr)' hoja de cálculo de almacenamiento de datos área de datos escribir matriz arr?
¿Para I = 1 enlazar(arr)' fila por fila?
Si d.exist(arr (i,1) amp; arr(i,2) y ampArr(I,3)) si existe codificación y Un diccionario de cadenas de conexión de nombres, existe en la Hoja2
Para j = 4 a 12 ' D, e, f... ¿columna por columna?
Si no son celdas (I, j, entonces, celdas(i, j) = Split(d(arr(i, 1)amp; arr(i, 2)), Chr(9))(j - 3)
Si la celda no contiene una fórmula, los datos correspondientes a la Hoja2 se escriben en la celda(i??1, ?j)? =?Split(d(arr(i,1)? amp?arr(i,?2)? amp?arr(i,?3)),?Chr(9))(j?-?4)? p>
¿Siguiente?
¿Fin? ¿si?
¿Siguiente?
¿Fin? ¿Qué usar?
r.¿Borrar contenidos?
hoja("
Entrada de datos
").celda(4,?3).select?
¿Cuadro de mensajes? ("
Los datos han sido actualizados. Para ver el contenido actualizado, por favor haga clic en el botón para consultar").