Excel 功能“;如果;在这种情况下,结果是一个变量
我想声明一个名为“taux”的变量,然后在计算中使用它Excel 功能“;如果;在这种情况下,结果是一个变量,excel,vba,if-statement,Excel,Vba,If Statement,我想声明一个名为“taux”的变量,然后在计算中使用它 Dim numLigne, pageClient numLigne = 2 Set pageClient = Sheets.Add(After:=Sheets("paramètre")) '1ere étape: Création a client file from a "parameter" sheet If Range("paramè
Dim numLigne, pageClient
numLigne = 2
Set pageClient = Sheets.Add(After:=Sheets("paramètre"))
'1ere étape: Création a client file from a "parameter" sheet
If Range("paramètre!B" & numLigne) = "" Then
Else
pageClient.Name = Range("paramètre!B" & numLigne)
End If
'2ème étape Copy Value from sheet "paramètre"
Range("A1:D7") = Range("paramètre!A1:D6").Value
Range("D4") = "Mensualité"
Range("D5") = "Trimestriel"
Range("D6") = "Semestriel"
Range("D7") = "Annuel"
'3ème étape: Calculating monthly, quarter, semester, and annual
Dim taux, capital, duree
capital = Range("B4")
duree = Range("B6")
Dim taux
if Range ("B7") <> "" then 'For information the value range ("B7") depends on the value inserted by userform, this value is related to insurance fee, if the client doesn't take any insurance, the appeared value would be #N/A
taux = Range ("B7")
Else
taux = Range ("B5")
End If
Dim mensualité
mensualité = -Pmt(taux / 12, duree * 12, capital)
Range("E4") = mensualité
Dim trimestriel
trimestriel = -Pmt(taux / 3, duree * 3, capital)
Range("E5") = trimestriel
Dim semestriel
semestriel = -Pmt(taux / 2, duree * 2, capital)
Range("E6") = semestriel
Dim annuel
annuel = -Pmt(taux / 1, duree * 1, capital)
Range("E7") = annuel
'4ème étape: faire un tableau d'amortissement
Dim numPeriode, interest, rembCap
For numPeriode = 1 To duree * 12
Range("B" & numPeriode + 11) = capital
interest = capital * taux / 12
rembCap = mensualité - interest
capital = capital - rembCap
Range("A" & numPeriode + 11) = numPeriode
Range("C" & numPeriode + 11) = interest
Range("D" & numPeriode + 11) = rembCap
Next
End Sub
Dim numLigne,页面客户端
numLigne=2
设置pageClient=Sheets.Add(后面:=Sheets(“参数”))
'1ereétape:从“参数”表中复制客户端文件
如果Range(“paramètre!B”&numlinge)=“那么
其他的
pageClient.Name=Range(“paramètre!B”&numlinge)
如果结束
“2èmeé磁带从工作表“paramètre”复制值”
范围(“A1:D7”)=范围(“参数!A1:D6”)。值
范围(“D4”)=“Mensualité”
范围(“D5”)=“Trimestriel”
范围(“D6”)=“Semestriel”
范围(“D7”)=“年度”
“3èmeé磁带:计算月度、季度、学期和年度
迪姆陶克斯,首都,杜雷
资本=范围(“B4”)
duree=范围(“B6”)
暗陶克斯
如果范围(“B7”)“那么”对于信息,值范围(“B7”)取决于userform插入的值,该值与保险费相关,如果客户未投保,则出现的值将为#N/A
taux=范围(“B7”)
其他的
taux=范围(“B5”)
如果结束
昏暗的餐桌
mensualité=-Pmt(taux/12,duree*12,大写)
范围(“E4”)=测量值
暗三叶草
trimestriel=-Pmt(taux/3,duree*3,大写)
范围(“E5”)=trimestriel
暗淡的塞梅斯特里尔
semestriel=-Pmt(taux/2,duree*2,大写)
范围(“E6”)=semestriel
暗年金
annuel=-Pmt(taux/1,duree*1,大写)
范围(“E7”)=年
'4èmeé磁带:公平的摊销表
暗淡的努姆佩里奥德、兴趣、回忆
对于numPeriode=1到duree*12
范围(“B”&numPeriode+11)=资本
利息=资本*taux/12
rembCap=mensualité-利息
资本=资本-rembCap
范围(“A”&numPeriode+11)=numPeriode
范围(“C”&numPeriode+11)=利息
范围(“D”和numPeriode+11)=rembCap
下一个
端接头
从您的代码中我可以看到,您有一个打字错误和双重模糊。我已经纠正了这些问题和其他一些问题:
- 打字错误(
而不是capital
)capital
- 删除了
taux的双dim
- 添加了
和wb
以便正确引用范围ws
- 定义每个dim
- 而不是使用
或“
,改为=”
/非(isempty())
isempty()
- 将对
的引用更改为“paramètre!B”
wb.WorkSheets(“paramètre”).range()
- 当
为空时,添加了一个“paramètreB”&numlinge
退出子项
你已经为taux设置了两次dim,这将导致一个错误你没有说明问题是什么谢谢你的帮助,关于这个问题没有说明,我相信我已经提到了,但我是这个论坛的新手,所以我并不真正使用消息格式。非常感谢你的帮助,我是VBA的新手。
Option Explicit ' forces declaration of all variables
Sub Mechro()
Dim numLigne As Integer
Dim pageClient As Object
Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet
Dim capital As Integer
Dim duree As String
Dim taux As Integer
Dim mensualité As Integer
Dim semestriel As Integer
Dim trimestriel As Integer
Dim annuel As Integer
Dim numPeriode As Integer
Dim interest As Integer
Dim rembCap As Integer
numLigne = 2
Set pageClient = wb.Sheets.Add(After:=wb.Worksheets("paramètre"))
'1ere étape: Création a client file from a "parameter" sheet
If Not (IsEmpty(wb.WorkSheets("paramètre").Range("B" & numLigne))) Then
pageClient.Name = wb.WorkSheets("paramètre").Range("B" & numLigne)
Set ws = wb.Worksheets(ActiveSheet.Name)
Else
MsgBox "paramètre!B" & numLigne & " is empty. Exiting sub"
Exit Sub
End If
'2ème étape Copy Value from sheet "paramètre"
ws.Range("A1:D7") = wb.Worksheet("paramètre").Range("A1:D6").Value
ws.Range("D4") = "Mensualité"
ws.Range("D5") = "Trimestriel"
ws.Range("D6") = "Semestriel"
ws.Range("D7") = "Annuel"
'3ème étape: Calculating monthly, quarter, semester, and annual
capital = ws.Range("B4")
duree = ws.Range("B6")
If Not (IsEmpty(ws.Range("B7"))) Then 'For information the value range ("B7") depends on the value inserted by userform, this value is related to insurance fee, if the client doesn't take any insurance, the appeared value would be #N/A
taux = ws.Range("B7")
Else
taux = ws.Range("B5")
End If
mensualité = -Pmt(taux / 12, duree * 12, capital)
ws.Range("E4") = mensualité
trimestriel = -Pmt(taux / 3, duree * 3, capital)
ws.Range("E5") = trimestriel
semestriel = -Pmt(taux / 2, duree * 2, capital)
ws.Range("E6") = semestriel
annuel = -Pmt(taux / 1, duree * 1, capital)
ws.Range("E7") = annuel
'4ème étape: faire un tableau d'amortissement
For numPeriode = 1 To duree * 12
ws.Range("B" & numPeriode + 11) = capital
interest = capital * taux / 12
rembCap = mensualité - interest
capital = capital - rembCap
ws.Range("A" & numPeriode + 11) = numPeriode
ws.Range("C" & numPeriode + 11) = interest
ws.Range("D" & numPeriode + 11) = rembCap
Next
End Sub