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)<>""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, "Consejo": 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 ((b5: h10000") el contenido del rango de celdas.
[b5]. resize (s, 7) = application. transpose (abr)' {b5] después de extender el range , la asignación es igual al valor transpuesto de abr.
range(" B5:H " & S+4 Ordenar columna H).
MsgBox " " & range("B2")& "¡El stock que se puede emitir para este material es 0! El programa sale., 64, aparece "Mensaje"
' Exit Sub 'Salir del programa.
Finalizar si... redimensionar (m, 7) = transponer (BRR)' {b5] Expandir el área. Después de eso, el valor es igual al valor transpuesto de. BRR.
range(" B5:H " & M+4 Ordenar [H5]' Ordenar columna H.
arr = Range(" B5:H " & M+). 4)'Reasignar rango ARR
("B5:H10000"). "Borrar contenido" Borrar((b5:h10000") celda El contenido de la región.
[b5] resize(s, 7) = application. transpose(abr)' {b5] Después de expandir la región, la asignación es igual al valor transpuesto de p>range(" B5:H " & S+4). [H5]' Ordena la columna H
For i = 1 To UBound(ARR)' en la matriz ARR
A = a+arr(i, 3)' asigna un valor.
Entonces
B = Val(Range("C2 ")' b Asignación
Si a-b < Si A-B es menor que 0, se realiza el siguiente proceso. se realiza
MsgBox " " & Range("B2") & "Artículos de inventario existentes. ¡"&;a &" no es suficiente para esta salida! El programa se cierra. , 64, aparece "Pregunta"
Conector de salida
Terminará si...
Para i = 1 a UBound(arr)
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] = Transponer (br)'El código anterior asigna el valor a [J5]. Resize(n,7) es igual al contenido transpuesto (br).
Conector final