EXCEL VBA: ¿Qué significan estas declaraciones? ¿Alguien puede traducirlos frase por frase?
Establecer d = createobject("script.dictionary")'Especifique d como objeto de diccionario.
arr = Hoja1. Utilice rango
Para i = 2 hasta el límite inferior (arr)
Si arr(i, 1) lt; gt "" entonces d(arr(i, 1)) = " " 'DAgregar palabras clave.
Luego
Mismo rango ("B2"). Confirmar
. Eliminar
. add3, 1, 1, join (d.keys, ","") La validez de los datos aumentada en b2 es igual al valor del enlace de la palabra clave d.
Termina con...
Establecer d = Ninguno
Finalizar conector
Subconsulta()
Dim d , arr, brr(), ar, br(), abr(), m, n, I, j, a, b, aa, s
Rango (" A5: P10000 "). "Borrar contenido" borra el contenido del rango de celdas ("A5: P10000").
If Range("B2") = " "Entonces MsgBox "¡Seleccione uno! El programa sale., 64, "Consejos": Salir del cortocircuito
If Range("C2 ") = " "Luego MsgBox "¡Por favor, complete la cantidad de entrega! El programa sale. , 64, "Consejo": Cuando las subceldas de exportación B2 y C2 estén vacías, aparecerá un cuadro de diálogo.
Arr = Hoja1. Asigne una matriz "usando rango".
Para i = 2 en la dimensión ARR1 al bucle UBound(arr)'.
Si arr (I, 1) = Rango ("B2"), arr (i, 4) = "Disponible", entonces 'determina si la celda es igual a Rango ("B2"), arr (I ,4) = "Disponible", ejecute el siguiente código.
M = m 1' Se acumulan M valores.
Redim preserve BRR (1to7, 1toM)' asigna un valor al número BRR,
For j = 1 to 6 'J realiza un bucle de 1 a 6.
Brr(j, m) = arr(i, j)' asigna un valor a Brr igual al valor de la matriz arr correspondiente.
Entonces
Brr(7, m) = arr(i, 10)' también es una asignación de Brr.
Terminará si...
Si arr(i, 1) = Range("B2 "), entonces juzgue arr (I, 1) = range ("B2 " ), ejecute el siguiente código.
S = valor acumulado de s 1.
Redim preserve abr (1to7, 1tos)' m también es el valor asignado a abr, que es igual al aspecto de la matriz arr correspondiente.
Para j = 1 a 6
abr(j, s) = arr(i, j)
Entonces
abr( 7, s) = arr(i, 10)
Terminará si...
Entonces
Si m = 0, entonces 'si m es igual 0, luego realice el siguiente proceso.
Rango(" B5:H10000"). "Borrar contenido" borra el contenido del rango de celdas ((b5:h10000").
[b5].resize(s,7) = aplicación.
transpose (abr)' {b5] Después de extender la región, la asignación es igual al valor transpuesto de abr.
rango(" B5: H " & S 4). Ordenar [H5]' Ordenar columna H.
MsgBox " " amp range ("B2") amp "¡El stock que se puede emitir para este material es 0! El programa sale., 64, aparece "Mensaje"
' Exit Sub 'Salga del programa.
Terminará si... resize (m, 7) = transpose (BRR)' {b5]Después de expandir el área, asigne un valor igual a BRR. transpuesto.
range("B5:H" & M 4)' Ordenar columna H
arr = Range(. "B5:H"&M 4)'Reasignar el ARR p>
range("B5:H10000"). "Borrar contenido" borra el contenido del rango de celdas ((b5:h10000).
p>[b5]. resize (s, 7). ) = application. transpose (abr)' {b5] Después de extender el rango, la asignación es igual al valor transpuesto de
range(" B5 : H " & S 4). ]' Ordena la columna H.
For i = 1 To UBound(ARR)' bucle en la matriz ARR.
A = a arr(i, 3)' asigna un valor a
Entonces
B = Val(Range("C2 ")' asigna un valor a b
Si a-b lt; Si A-B es menor que 0, realice el siguiente proceso.
MsgBox " " amp range ("B2") amp; "Artículos de inventario existentes"; ¡un amplificador "no es suficiente para esta salida! El programa sale. , 64, mensaje emergente "Preguntar".
Conector de salida
Terminará si...
Para i = 1 a UBound(arr)
p>n = n 1
ReDim Preserve br(1 a 7, 1 a n)
Para j = 1 a 7
br( j, n) = arr(i , j)
Entonces
aa = aa arr(i, 3)
Si Val(aa)>= Val (b) Entonces
Salir para...
Terminará si...
Entonces
br(3, n) = br(3,n) - (aa - b)
[J5]. Resize(n,7) = Transpose (br)'El código anterior asigna el valor a [J5]. Resize(n,7) es igual al contenido transpuesto (br).
Conector final