我有一个 Excel 项目,其中包含 3 个工作表,即“不健康食品”“健康食品”和“膳食”
两张食物表包含食物清单以及它们的脂肪、蛋白质和碳水化合物含量。使用该数据,还可以计算出每 100 克的卡路里。这些食品分为 3 个小标题:食品、零食和饮料。我想创建一个宏,该宏将使用每张桌子上每个食物旁边的“添加到膳食”按钮启动,该按钮会将行的内容复制到“膳食”类中的第一个可用行。
有可能做到这一点吗?如果是这样,怎么做?
使用按钮来引用工作表上的单元格的问题(在我看来)是按钮是工作表上的对象,这使得它们在列/行方面的位置非常棘手。
如果您想使用按钮,这是蛮力方法。假设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
(注意 - 我假设 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
对于士力架,您需要为 Apple 添加 simialr 代码,即
Private Sub Snickers_Click()
AddMealToMenu Range("A3")
End Sub
如果这对你有用,很好,但它可能需要一些设置并且是一种蛮力方法。