2014-06-24 176 views
-1

我需要Excel VBA中的帮助。我想开发一个函数,它会自动将函数应用到所选单元格区域。我的示例代码在这里工作独立的单行我想应用它至少500行。自动化Excel VBA功能

Sub Value() ' ' Value For the Insurance Rate 

    Dim percentage As Double 
    Dim year As Double 

    percentage = Sheet5.Range("R2").Value 
    year = Sheet5.Range("Q2").Value 

    If percentage <= 85 And year <= 25 Then 
     Sheet5.Range("S2").Value = Sheet4.Range("D13").Value 

    ElseIf percentage <= 85 And year > 25 Then 
     Sheet5.Range("S2").Value = Sheet4.Range("C13").Value 

    ElseIf percentage > 85 And percentage <= 90 And year <= 25 Then 
     Sheet5.Range("S2").Value = Sheet4.Range("D8").Value 

    ElseIf percentage > 85 And percentage <= 90 And year > 25 Then 
     Sheet5.Range("S2").Value = Sheet4.Range("C8").Value 

    ElseIf percentage > 90 And percentage <= 95 And year <= 25 Then 
     Sheet5.Range("S2").Value = Sheet4.Range("D5").Value 

    ElseIf percentage > 90 And percentage <= 95 And year > 25 Then 
     Sheet5.Range("S2").Value = Sheet4.Range("C5").Value 

    ElseIf percentage > 95 And year <= 25 Then 
     Sheet5.Range("S2").Value = Sheet4.Range("D3").Value 

    ElseIf percentage > 95 And year > 25 Then 
     Sheet5.Range("S2").Value = Sheet4.Range("C3").Value 
    End If 
End Sub 
+0

到目前为止您的尝试是什么?堆栈溢出不是代码写入/修改服务。 – enderland

回答

1

你很近。我只是将您的过程转换为用户定义的函数,然后可以像Excel窗口中的内置Excel函数一样使用它。

下面的代码:

Function myValue(percentage As Double, year As Double) ''Value For the Insurance Rate 

    If percentage <= 85 And year <= 25 Then 
     myValue = Sheet4.Range("D13").Value 

    ElseIf percentage <= 85 And year > 25 Then 
     myValue = Sheet4.Range("C13").Value 

    ElseIf percentage > 85 And percentage <= 90 And year <= 25 Then 
     myValue = Sheet4.Range("D8").Value 

    ElseIf percentage > 85 And percentage <= 90 And year > 25 Then 
     myValue = Sheet4.Range("C8").Value 

    ElseIf percentage > 90 And percentage <= 95 And year <= 25 Then 
     myValue = Sheet4.Range("D5").Value 

    ElseIf percentage > 90 And percentage <= 95 And year > 25 Then 
     myValue = Sheet4.Range("C5").Value 

    ElseIf percentage > 95 And year <= 25 Then 
     myValue = Sheet4.Range("D3").Value 

    ElseIf percentage > 95 And year > 25 Then 
     myValue = Sheet4.Range("C3").Value 
    End If 
End Function 

然后在细胞S2(或您要使用的功能的任何其它单元格),你会进入

=myValue(R2,Q2)

还要注意,我改变函数名称为myValue,以免遇到VBA中内置Value成员的问题。

+0

非常感谢,现在我的重担已经解决了。非常感谢它的工作.... – user3291887

+0

但它有点hetic,因为我必须手动更改单元格引用,可以将公式拖动到所需的行 – user3291887

+0

哪些单元格引用是你不得不手动更改? 'R2'和'O2'还是代码中的? – guitarthrower