2011-05-14 118 views
0

我有一個包含3個表,即「不健康的食物」,「健康食品」和「食品」在Excel中使用宏來編輯另一個表格中的單元格值?

兩個食物表包含的食品列表以及它們的脂肪,蛋白質和碳水化合物含量沿着Excel項目。使用這些數據,他們每100克的卡路里也被計算出來。這些食物分爲三個小標題:食物,零食和飲料。我想要創建一個宏,它將使用每個桌子上每個食物項旁邊的「添加到餐點」按鈕啓動,這個按鈕將把行的內容複製到「膳食」類中的第一個可用行。

這樣做有可能完成嗎?如果是這樣,怎麼樣?

+0

是否有必要點擊按鈕? – 2011-05-14 15:27:36

回答

1

使用按鈕引用工作表上的單元格的問題是,按鈕是工作表上的對象,這使得根據列/行獲取其位置非常棘手。

這裏是蠻力如果你想使用按鈕的方法。假設在Healthy Foods您在folllowing:

 A   B  C   D 
1 Item  Fat Protein Sugar 
2 Apple  0  50   5  |Add To Menu| <-- this is a commandbutton called **Apple** 
3 Snickers 100 0   100  |Add to Menu| <-- this is a commandbutton called **snickers** 

將下面的代碼細節,下一個可用行復制Meal(NB - 我認爲膳食如上所示相同的表格式)

Private Sub Apple_Click() 
    AddMealToMenu Range("A2") //For each button you must specify range where item is in table 
End Sub 

Sub AddMealToMenu(ref As Range) 
    Dim mealItem As Range 
    Set mealItem = Range(ref, ref.Offset(0, 3)) 
    mealItem.Copy Destination:=GetNextFreeRow 
End Sub 

Function GetNextFreeRow() As Range 
    With Worksheets("Meal") 
     If .Range("A2") = vbNullString Then 
      Set GetNextFreeRow = .Range("A2") 
     Else 
      Set GetNextFreeRow = .Range("A1").End(xlDown).Offset(1, 0) 
     End If 
    End With 
End Function 

對於士力架你需要添加simialr代碼爲蘋果即

Private Sub Snickers_Click() 
    AddMealToMenu Range("A3") 
End Sub 

如果這個工程你很好,但它可能需要一些設置,並且是一種強力方法。

+0

完美謝謝:) 另一個問題,可以說我正在尋找最具蛋白質的食物,我知道我可以使用MAX公式來找出哪些食物具有最高的蛋白質水平,但是如何製作細胞顯示食物的名稱而不是蛋白質水平? – Josh 2011-05-14 22:31:52

+0

你的意思是在你按下的表格上有一個按鈕,它突出顯示了蛋白質含量最高的食物? – 2011-05-15 08:45:40

+0

不,我在工作表的底部有一個小桌子,它需要通過公式獲得最高蛋白質的食物名稱,而不是宏觀 – Josh 2011-05-15 09:36:45

相關問題