首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否使用excel中的宏编辑另一个表中的单元格值?

是否使用excel中的宏编辑另一个表中的单元格值?
EN

Stack Overflow用户
提问于 2011-05-14 22:57:55
回答 1查看 1.3K关注 0票数 0

我有一个Excel项目,其中包含3个工作表,即“不健康食品”、“健康食品”和“饭菜”。

这两个食物表包含了食物的清单及其脂肪、蛋白质和碳水化合物的含量。使用这些数据,他们每100克的卡路里也被计算出来。这些食物分为三个副标题:食物、零食和饮料。我想创建一个宏,它将使用每个表上每个食物项旁边的“添加到餐”按钮启动,这将复制行的内容到“餐”类中的第一个可用行。

有可能做到这一点吗?如果是这样的话,是怎么做的?

EN

Stack Overflow用户

回答已采纳

发布于 2011-05-14 23:38:42

在我看来,使用按钮引用工作表上的单元格的问题是,按钮是工作表上的对象,这使得获取它们在列/行中的位置相当棘手。

如果你想使用按钮,这里是暴力破解的方法。假设在Healthy Foods中,您具有以下内容:

代码语言:javascript
运行
复制
     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的表格式与上面显示的相同)

代码语言:javascript
运行
复制
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

对于士力架,你需要添加类似的苹果代码,即

代码语言:javascript
运行
复制
Private Sub Snickers_Click()
    AddMealToMenu Range("A3")
End Sub

如果这对你有效,很好,但它可能需要一些设置,并且是一种蛮力方法。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6002607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档