【发布时间】:2014-10-12 23:42:05
【问题描述】:
我正在使用宏来生成报告。我从结构中获取信息,并使用公式计算填充工作表中单元格的各种数字。这些工作表也是在宏中创建的。当用户单击单元格时,我必须做些什么来确保计算我在单元格中填充的数字的公式保留在单元格中?即,用户可以决定在生成报告后更改单元格的公式。
这是我在函数createTS() 中创建新单元格的方法:
Function createTS(ByRef index As Integer, ByRef wBStruct As wBStruct, ByRef gcBStruct As gcBStruct) As Worksheet
'1) set up worksheet
Set createTS = ThisWorkbook.Worksheets.Add(, ActiveSheet, 1, xlWorksheet)
With createTS
ThisWorkbook.VBProject.VBComponents(.CodeName).Name = cnDic(index)
.Name = wBStruct.wTumorCellLine & "_" & wBStruct.wTypeBlock(index).projNum & "(" & gcBStruct.typeName & ")"
End With
'...lots of code...
'this is where I populate the cells in the worksheet'
'...lots of code...
End Function
在函数中,我可能会将结构中的信息复制到某些单元格中(这些单元格不包含公式,但是是我计算其他单元格中值的原始数字。换句话说,其他单元格中的公式只会引用其他单元格,而不是在宏中创建的结构)。关键是如果我能让公式留在单元格中,它们只能引用其他单元格吗? (我最初的信念)
一个示例单元格可能如下所示:
createTS.Cells(10,x).Value = createTS.Cells(1,5).Value*100 ' x would be some integer
我在哪里包含代码以确保 ^ 公式保持在 cell (10,x) 内,以便用户以后可以根据需要更改公式?
根据我想要做的,有没有更好的方法来做到这一点?
附带说明,假设我的假设是正确的,仅使用公式引用其他单元格,公式是否可以包含引用非单元格的变量,例如常量(x = 5.3445435 我宁愿使用 x 而不是 @987654326 @ 一遍又一遍地)?可以说变量是另一个单元格吗?有哪些可能性?
请注意,宏将在生成报告后关闭。
谢谢!
【问题讨论】:
-
我不知道你想做什么。如果用户更改(或尝试更改)公式,您是否希望工作表重新计算?究竟应该发生什么?请举一个非常简单的例子。您似乎有多个问题相互贯穿,这往往会导致该网站上的“坏”(例如,很难回答)问题。如果您有多个问题,请随时提出多个问题。
-
我为这个混乱的问题道歉,但我正在寻找的是如果你双击它
=A1*100,如果我在产生的宏中输入:(Given: x = 2, y = 100) ws.Cells(1,x).value= ws.Cells(1,1).value*y,单元格看起来像这样工作表。如果您更改公式,工作表应重新计算。但是,发生这种情况时,生成工作表的宏不必运行。
标签: excel vba worksheet cell-formatting