2015-04-17 100 views
1

我是新的excel VBA,并想提出问题。我有一个带有标题的销售数据。 26行和12列。矩阵乘法excel vba数据

下面是我的伪数据:

Dummy Data

我想创建按钮来改变货币。例如点击欧元将数据更改为欧元,然后点击美元将数据更改为美元。

这是我对按钮的一个代码:

Sub Change_to_EUR()Dim BM_Store_Sales_EUR As Variant 
Dim BM_Store_Sales_IDR 
BM_Store_Sales_EUR = Sheet3.Range(Cells(2, 2), Cells(26, 13)).Value 
BM_Store_Sales_IDR = Application.WorksheetFunction.MMult(BM_Store_Sales_EUR, "$O$1") 
MsgBox BM_Store_Sales_EUR 
End Sub 
+0

为什么不创建一个可以连接到包含col1的表格的验证列表:货币名称,col2:汇率?然后,您可以用VLOOKUP拨打外汇... – user3819867

+0

我认为现在不需要,因为我只使用2种货币。但是你的评论确实给了我一些启发。谢谢 – Windalfin

回答

0

你可以做这样的事情(不需要矩阵)

调用Change_Currency有一个真正的说法倍数的范围与汇率O1,与假的(或离开它空白)调用它划分

Sub Button1_Click() 
Call Change_Currency(True) 
End Sub 

Sub Button2_Click() 
Call Change_Currency 
End Sub 

代码

Sub Change_Currency(Optional bEuro As Boolean) 
Dim ws As Worksheet 
Dim rng1 As Range 
Set ws = Sheets(1) 
Set rng1 = ws.Range(ws.[b2], ws.[m26]) 
ws.[o1].Copy 

If bEuro Then 
    rng1.PasteSpecial xlPasteValues, xlDivide 
Else 
    rng1.PasteSpecial xlPasteValues, xlMultiply 
End If 

Application.CutCopyMode = False 
End Sub 
+0

我觉得这给了我更多的想法。但是,如果用户点击按钮两次,这个解决方案将被倍增/分割两次,这可能会让人困惑。 – Windalfin