下面的代码适用于表的第一行,但FX_Rate和FX_Date偏移函数保持导致错误,并且Table_Date和Table_Rate偏移函数完全不工作(全部在每个ElseIf为每种货币)。有人可以告诉我我做错了什么吗?我有这样的感觉,我只是在代码的错误区域有一些偏移功能,但我可能会离开。偏移函数创建错误(VBA)
该代码旨在获取表格中的数据,将日期与FX信息进行匹配并返回当天的汇率,然后移动到表格中的下一个条目,直至到达空白单元格。
我很抱歉,如果这是一个愚蠢的问题或之前已被问过 - 我找不到答案。
Sub Convert()
Dim Table_Date As Range
Set Table_Date = Range("B12")
Dim FX_Date As Range
Set FX_Date = Range("L11")
Dim Table_Rate As Range
Set Table_Rate = Range("E12")
Dim FX_Rate As Range
Set FX_Rate = Range("M11")
Dim Table_Currency As Range
Set Table_Currency = Range("D12")
Dim x As Integer
Dim y As Integer
x = 2
y = 2
Do While x > 1
If Table_Date = "" Then
x = -1
Else
If Table_Currency = "USD" Then
Do While y > 1
If Table_Date = FX_Date Then
Table_Rate = FX_Rate
y = -1
x = -1
Else
Set FX_Date = FX_Date.Offset(1, 0)
Set FX_Rate = FX_Rate.Offset(1, 0)
End If
Loop
Set Table_Date = Table_Date.Offset(1, 0)
Set Table_Rate = Table_Rate.Offset(1, 0)
ElseIf Table_Currency = "EUR" Then
Set FX_Rate = FX_Rate.Offset(0, 2)
Do While y > 1
If Table_Date = FX_Date Then
Table_Rate = FX_Rate
y = -1
x = -1
Else
Set FX_Date = FX_Date.Offset(1, 0)
Set FX_Rate = FX_Rate.Offset(1, 0)
End If
Loop
Set Table_Date = Table_Date.Offset(1, 0)
Set Table_Rate = Table_Rate.Offset(1, 0)
ElseIf Table_Currency = "JPY" Then
Set FX_Rate = FX_Rate.Offset(0, 1)
Do While y > 1
If Table_Date = FX_Date Then
Table_Rate = FX_Rate
y = -1
x = -1
Else
Set FX_Date = FX_Date.Offset(1, 0)
Set FX_Rate = FX_Rate.Offset(1, 0)
End If
Loop
Set Table_Date = Table_Date.Offset(1, 0)
Set Table_Rate = Table_Rate.Offset(1, 0)
ElseIf Table_Currency = "SGD" Then
Set FX_Rate = FX_Rate.Offset(0, 4)
Do While y > 1
If Table_Date = FX_Date Then
Table_Rate = FX_Rate
y = -1
x = -1
Else
Set FX_Date = FX_Date.Offset(1, 0)
Set FX_Rate = FX_Rate.Offset(1, 0)
End If
Loop
Set Table_Date = Table_Date.Offset(1, 0)
Set Table_Rate = Table_Rate.Offset(1, 0)
ElseIf Table_Currency = "HKD" Then
Set FX_Rate = FX_Rate.Offset(0, 6)
Do While y > 1
If Table_Date = FX_Date Then
Table_Rate = FX_Rate
y = -1
x = -1
Else
Set FX_Date = FX_Date.Offset(1, 0)
Set FX_Rate = FX_Rate.Offset(1, 0)
End If
Loop
Set Table_Date = Table_Date.Offset(1, 0)
Set Table_Rate = Table_Rate.Offset(1, 0)
ElseIf Table_Currency = "NZD" Then
Set FX_Rate = FX_Rate.Offset(0, 5)
Do While y > 1
If Table_Date = FX_Date Then
Table_Rate = FX_Rate
y = -1
x = -1
Else
Set FX_Date = FX_Date.Offset(1, 0)
Set FX_Rate = FX_Rate.Offset(1, 0)
End If
Loop
Set Table_Date = Table_Date.Offset(1, 0)
Set Table_Rate = Table_Rate.Offset(1, 0)
Else
Table_Rate = "Not a valid currency"
y = -1
x = -1
End If
End If
Loop
End Sub
ITI不明白你想要做什么。一两张图片可能会有所帮助。根据你的一般描述,我觉得有一个更简单的解决方案。 –
@DougGlancy https://imgur.com/xJlcimb宏是为了从左侧获取数据,并使用右侧的历史汇率来转换金额(此刻,我只是试图获得利率,没有完成实际的数学转换)。 – 1937827
“VLOOKUP”如何? –