Compartir a través de


Uso de las funciones de hojas de cálculo en Visual Basic

Use la mayoría de las funciones de hojas de cálculo de Microsoft Excel con las instrucciones de Visual Basic. Para ver una lista de las funciones de hojas de cálculo que puede usar, consulte Lista de funciones de hojas de cálculo disponibles para Visual Basic.

Nota:

Algunas funciones de hoja de cálculo no son útiles en Visual Basic. Por ejemplo, la función Concatenate no es necesaria porque, en Visual Basic, puede usar el operador & para unir varios valores de texto.

Llamada a una función de hoja de cálculo desde Visual Basic

En Visual Basic, las funciones de hojas de cálculo de Excel están disponibles a través del objeto WorksheetFunction.

El siguiente procedimiento Sub usa la función de hoja de cálculo Min para determinar el menor valor de un rango de celdas. Primero, la variable myRange se declara como un objeto Range y, a continuación, se establece como el rango A1:C10 en Hoja1. A otra variable, answer, se le asigna el resultado de aplicar la función Min a myRange. Por último, el valor de answer se muestra en un cuadro de mensaje.

Sub UseFunction() 
 Dim myRange As Range 
 Set myRange = Worksheets("Sheet1").Range("A1:C10") 
 answer = Application.WorksheetFunction.Min(myRange) 
 MsgBox answer 
End Sub

Si usa una función de hoja de cálculo que requiere una referencia de rango como argumento, debe especificar un objeto Range. Por ejemplo, puede usar la función de hoja de cálculo Match para buscar un rango de celdas. En una celda de hoja de cálculo, escribiría una fórmula de esta manera =COINCIDIR(9,A1:A10,0). Sin embargo, en un procedimiento de Visual Basic, especificaría un objeto Range para obtener el mismo resultado.

Sub FindFirst() 
 myVar = Application.WorksheetFunction _ 
 .Match(9, Worksheets(1).Range("A1:A10"), 0) 
 MsgBox myVar 
End Sub

Nota:

Las funciones de Visual Basic no usan el calificador WorksheetFunction. Una función puede tener el mismo nombre que una función de Microsoft Excel y aún así funcionar de forma diferente. Por ejemplo, Application.WorksheetFunction.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 valor de la propiedad Formula del objeto Range correspondiente. En el siguiente ejemplo, la función de hoja de cálculo RAND (que genera un número aleatorio) se asigna a la propiedad Formula del rango A1:B3 en Sheet1 en la hoja de cálculo activa.

Sub InsertFormula() 
 Worksheets("Sheet1").Range("A1:B3").Formula = "=RAND()" 
End Sub

Ejemplo

Este ejemplo usa la función de hoja de cálculo Pmt para calcular un pago de préstamo hipotecario. Observe que este ejemplo usa el método InputBox en lugar de la función InputBox para que el método realice la comprobación de tipo. Las instrucciones Static hacen que Visual Basic conserve los valores de las tres variables; aparecen como valores predeterminados la próxima vez que ejecuta el programa.

Static loanAmt 
Static loanInt 
Static loanTerm 
loanAmt = Application.InputBox _ 
 (Prompt:="Loan amount (100,000 for example)", _ 
 Default:=loanAmt, Type:=1) 
loanInt = Application.InputBox _ 
 (Prompt:="Annual interest rate (8.75 for example)", _ 
 Default:=loanInt, Type:=1) 
loanTerm = Application.InputBox _ 
 (Prompt:="Term in years (30 for example)", _ 
 Default:=loanTerm, Type:=1) 
payment = Application.WorksheetFunction _ 
 .Pmt(loanInt / 1200, loanTerm * 12, loanAmt) 
MsgBox "Monthly payment is " & Format(payment, "Currency")

Vea también

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.