2011-05-14 120 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

相关问题