我在主计算机上创建并运行了VBA子项,但笔记本计算机上的预期工作不正常(均使用Excel 2013)。计算机之间的VBA结果不一致 - 将.value设置为公式
Set headerColumn_total = ActiveWorkbook.Worksheets("Raw Consensus").ListObjects("TblConsensusTotals").ListColumns.Add
colPosition = ActiveWorkbook.Worksheets("Raw Consensus").ListObjects("TblConsensusTotals").ListColumns.Count
colPosition = colPosition - 1
CellValue = "=SUM(TblConsensus[" & colPosition & "])"
headerColumn_total.Range.Cells(1, 1).Value = CellValue
headerColumn_total.Range.Cells(1, 1).Interior.ColorIndex = 6
解释的代码: 正如你可以看到,第一行添加一列以2行表,TblConsensusTotals的末尾。然后,对列数进行计数(减1)并分配给colPosition。 CellValue是我想要的单元格的确切文本,当然也是内部颜色。
在我的主计算机上(预期): 列中最顶端的单元格(表格的第1行)接收公式,第2行单元格(.Range.Cells(2,1))为空。颜色设置是相同的。
在我的笔记本电脑上(已观察): 列的第一行和第二行单元格都接收到公式,就好像它被赋予整个范围而不仅仅是单元格(1,1)。但是,颜色仍然只在第一个单元格上设置,如预期的那样。
我敢肯定在VBA或者其他版本中存在.001版本的差异,但是我不知道如何去寻找。有没有不同的方式可以编写这个程序让它在两台计算机上都能正常工作?
谢谢!
编辑:
忘了提。有趣的是,如果你设置.Value =任何东西,但是一个公式(比如说.Value = 2),而不是将CellValue定义为包含公式的字符串,则它在主计算机和笔记本计算机上按预期工作,只设置Value单细胞。一个字符串也是一样的。但是,一旦您在字符串中使用公式('='符号),它会“断开”并将该值设置为笔记本电脑上的两个单元格。
根据公式内部是如何工作的'tables'在笔记本电脑上的观测数据是正确的* *的行为。 –
如果是这样的话,我该如何打破它呢?要点是,我想改变范围内单个单元格的值,而不是整个范围。编辑:请记住有2个不同的表格,TblConsensusTotals和TblConsensus。 TblConsensusTotals存在的原因是因为我需要2个总计行,而不仅仅是1个。所以我只用2行数据创建了第二个表(没有标题或总数)。所以说,为什么地球上是一个字符串包含发送到该范围的公式,而不包含公式的字符串只能进入一个单元格? –
使用'.Formula'代替'.Value'怎么样? –