Tengo tres preguntas sobre Excel - VBA. (Lo más importante es el cuadro de diálogo público * * *)
La respuesta a la segunda pregunta de arriba es incorrecta. Por supuesto, normalmente es imposible utilizar funciones de Excel directamente, pero podemos salvar el país mediante curvas. Las funciones que se pueden utilizar en tablas de Excel también se pueden utilizar en VBA. Puede hacer referencia a ellos simplemente usando un objeto WorksheetFunction, seguido del nombre de la función y luego agregando el rango de celdas referenciadas. Por ejemplo:
Aplicar. Worksheet Function.Max(Range(" A1:C5 "))
El siguiente es un artículo sobre cómo utilizar las funciones integradas de Excel en VBA. En realidad, es muy sencillo decir simple. Según mi experiencia, es muy, muy beneficioso leerlo detenidamente y ahorrará mucho esfuerzo en el futuro, porque definitivamente se utilizará con frecuencia. Si es demasiado detallado, simplemente mire los ejemplos y comprenderá cómo usarlo. Pero se recomienda encarecidamente que lo guarde y lo lea más tarde.
La mayoría de las funciones de la hoja de cálculo de Microsoft Excel se pueden utilizar en declaraciones de Visual Basic. Para ver una lista de las funciones de la hoja de cálculo que puede usar, consulte Lista de funciones de la hoja de cálculo que puede usar con Visual Basic.
Tenga en cuenta que algunas funciones de la hoja de cálculo no están disponibles en Visual Basic. Por ejemplo, la función Concatenar no es práctica porque puede usar el operador & para concatenar múltiples valores de texto.
Llamar funciones de hoja de cálculo desde Visual Basic
En Visual Basic, puede utilizar funciones de hoja de cálculo de Microsoft Excel a través del objeto WorksheetFunctions.
El siguiente procedimiento Sub utiliza la función Min de la hoja de cálculo para determinar el valor mínimo en un rango de celdas. Primero declare la variable myRange como un objeto Rango y luego configúrelo en el rango de celdas A1:C10 en la Hoja1. Especifique otra variable, responda, como resultado de aplicar la función Min a myRange. Finalmente, el valor de la respuesta se muestra en el cuadro de mensaje.
Sub usa la función()
Atenuar myRange como rango
establecer mi rango = Hojas de trabajo ("hoja 1"). Rango ( " A1:C10 " )
Respuesta = Aplicar . Mínimo de función de hoja de trabajo (myRange)
Respuesta de MsgBox
Conector final
Debe especificarse si se utiliza una función de hoja de trabajo que requiere una referencia de rango de celdas como parámetro A Range objeto. Por ejemplo, puede utilizar la función Coincidir hoja de cálculo para buscar en un rango de celdas. Puede ingresar fórmulas en celdas de la hoja de cálculo, como "=MATCH(9,A1:A10,0)". Sin embargo, debe especificar un objeto Rango en el procedimiento de Visual Basic para lograr el mismo resultado.
Sub FindFirst()
myVar = aplicación. Funciones de la hoja de trabajo_
. Match(9,sheet(1).Range("A1:A10"),0)
MsgBox myVar
Conector final
Tenga en cuenta que Visual Basic Las funciones no utilizan el identificador WorksheetFunction. Esta función puede tener el mismo nombre que una función de Microsoft Excel, pero su funcionalidad es diferente. Por ejemplo, la función aplicación.hoja de trabajo. Log y log devolverán valores diferentes.
Insertar una función de hoja de cálculo en una celda
Para insertar una función de hoja de cálculo en una celda, especifique la función como el valor de la propiedad Fórmula del objeto Rango correspondiente. En el siguiente ejemplo, la función de hoja de cálculo ALEATORIO (que genera números aleatorios) se asigna a la propiedad Fórmula de las celdas A1:B3 en la Hoja1 del libro activo.
Subinsertar fórmula()
Hoja("Hoja1"). rango("A1:B3").
Fórmula = "=RAND()"
Finalizar ajuste
Ejemplo
Este ejemplo utiliza la función de hoja de cálculo Pmt para calcular el pago de un préstamo hipotecario residencial. Tenga en cuenta que este ejemplo utiliza el método InputBox, no la función InputBox, por lo que este método puede realizar la verificación de tipos. La declaración estática hace que Visual Basic mantenga los valores de tres variables; la próxima vez que se ejecute el programa, estas variables aparecerán como sus valores predeterminados.
Monto del préstamo estático
Préstamo estático
Plazo del préstamo estático
loanAmt = Solicitud. InputBox _
(Mensaje:= "Monto del préstamo (por ejemplo, 100000)", _
Default:=loanAmt, Type:=1)
loanInt =Aplicar programa. InputBox _
(Pregunta:= "Tasa de interés anual (por ejemplo, 8,75)", _
Valor predeterminado:=loanInt, Tipo:=1)
loanTerm = aplicación. InputBox _
(Pregunta:= "plazo anual (por ejemplo, 30 años)", _
Valor predeterminado:=plazo del préstamo, Tipo:=1)
Pago = Aplicar. Funciones de la hoja de trabajo_
.
Pmt(loanInt/1200, lendTerm*12, lendAmt)
MsgBox "El pago mensual es" y formato amp(pago, "moneda")
Hoja de trabajo disponible para la lista de funciones de Visual Basic
a _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Acos p>
Acosh
y
Axin
Axin
Atan2
Atankh
AveDev
Promedio
b _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
BetaDis
BetaInv
BinomDist
c _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Techo
Infantil
ChiInv
ChiTest
Elige
Limpio
Kongban
Confianza
Correll
Palo corto p>
Contar
ContarA
Contar espacios en blanco
función contarif
Kovar
Cribinoam p>
d _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
dPromedio
Días 360
Decibelios
Recuento de datos
p>DCountA
Ddb
Grado
DevSq
DGet
DMax
DMin
USD
Productos de datos
DStDev
DStDevP
DSum
DVar
DVarP
e _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Plano
ExponDist
f _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Hechos
FDist
Descubrimiento
FindB
FInv
Fisher
Fisher
Fijo sin cambios<; /p>
Piso
Previsión
Frecuencia
FTest
Vehículo de combate
g _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Rayos gamma
GammaInv
Rayos Gamma
Inicio de Geometría
Crecimiento
h _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
HarMean
HLookup
HypGeomDist
1. _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
& ltindex
Interceptación
Ipmt p >
Infrarrojo
IsErr
IsError
Lógico
IsNA
es contexto
p>
EsNúmero
Ispmt
IsText
j _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
k _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Kurt
l _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Grande
EstLín
Ln
Registro
Registro 10
LogEst
LogInv
LogNormDist
Comprobación
m _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Concurso
Máximo
MDeterm
Mediana
Hokkien
MInversa
MIrr
MMult
Método
n _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
NegBinomDist
NormDist p>
Norminov
NormSDist
NormSInv
NPer
Valor actual neto
o _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Número impar
O
p _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Pearson
Percentil
Rango percentil
Perlmutter
Fonético
Pi
Transistor de mesa pasivado
Poisson
Potencia
Ppmt
Problema
Producto
Apropiado
Visitas a la página
q _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Cuartiles
r _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>Radián
Rango
Velocidad
Reemplazar
Reemplazar b
Informe
Antigua Roma
Rondas
Redondear hacia abajo
Descripción general
RSq
RTD
s _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Buscar
Buscar b
Seno hiperbólico
Oblicuo
Subnúcleo lenticular
Oblicuo
Pequeño
Estandarizar
Desviación estándar (desviación estándar)
StDevP
StEyx
Reemplazo
Subtotal
Suma
Sumif
Suma y producto
SumSq
SumX2MY2
SumX2PY2
SumXMY2
Dijo
t _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Tangente hiperbólica
TDist
Texto
TInv
Shift
Tendencia
Decoración adicional
Tremaine
t prueba
u _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
USD
V. _ _ _ _ _
Definir variables
VarP
Vdb
Función de búsqueda vertical
w _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Día de trabajo
(estadístico) Weibull (o Weibull)
x _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
y _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
z _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
ZTest p>
Además, no he encontrado el tercer problema que mencionaste. Pero creo que es posible que lo hayas registrado mal.
Debes asegurarte de que tu Comdlg32.ocx esté en el directorio correcto. Para Win95/98/me, simplemente copie Comdlg32.ocx al directorio windows/system; para Win2000/xp, simplemente copie Comdlg32.ocx al directorio windows/system32.