我有一个Excel项目,其中包含3个工作表,即“不健康食品”、“健康食品”和“饭菜”。
这两个食物表包含了食物的清单及其脂肪、蛋白质和碳水化合物的含量。使用这些数据,他们每100克的卡路里也被计算出来。这些食物分为三个副标题:食物、零食和饮料。我想创建一个宏,它将使用每个表上每个食物项旁边的“添加到餐”按钮启动,这将复制行的内容到“餐”类中的第一个可用行。
有可能做到这一点吗?如果是这样的话,是怎么做的?
发布于 2011-05-14 23:38:42
在我看来,使用按钮引用工作表上的单元格的问题是,按钮是工作表上的对象,这使得获取它们在列/行中的位置相当棘手。
如果你想使用按钮,这里是暴力破解的方法。假设在Healthy Foods中,您具有以下内容:
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 -I假设Meal的表格式与上面显示的相同)
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对于士力架,你需要添加类似的苹果代码,即
Private Sub Snickers_Click()
AddMealToMenu Range("A3")
End Sub如果这对你有效,很好,但它可能需要一些设置,并且是一种蛮力方法。
https://stackoverflow.com/questions/6002607
复制相似问题