Проблема (на мой взгляд) с использованием кнопок для ссылки на ячейки на рабочем листе заключается в том, что кнопки - это объекты на рабочем листе, что усложняет получение их позиции в виде столбца / строки.
Вот подход грубая сила , если вы хотите использовать кнопки. Предположим, что в 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 - я предполагаю, что Еда в том же формате таблицы, как показано выше)
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
Для Snickers вам нужно добавить код simialr для Apple, т.е.
Private Sub Snickers_Click()
AddMealToMenu Range("A3")
End Sub
Если это работает для вас, хорошо, но это может потребовать некоторой настройки и является подходом грубой силы.