【问题标题】:Re-order row cells重新排序行单元格
【发布时间】:2015-09-13 02:04:11
【问题描述】:

我有一个优先工作列表,其中包含根据相邻数字数据计算的几列中受保护的公式。我不想勾选允许用户插入和删除行以保持工作表大小的复选框。

我想要做的是有两个命令按钮,一个用于up,一个用于down,它将相应地向上或向下移动未受保护的单元格。 (即更改优先级。)而不删除上面或下面的数据。 (有效地交换行中的数据)。

我正在考虑“上移”按钮,在上方插入 2 行范围,将数据复制到这些单元格(基于活动单元格或选定单元格),然后删除原始范围的单元格,将下方的单元格向上移动.类似于“下移”按钮。

我似乎找不到我要找的东西,因为我不相信我可以使用插入行,因为列被锁定并且还需要复制公式。帮助表示赞赏,我有点超出我的深度。

只是想想,也许按钮可以关闭保护,复制,插入上下两行,粘贴,删除行(原始),然后重新打开保护?

【问题讨论】:

  • 在宏运行期间以编程方式关闭保护可能是最好的主意。请尝试并分享我希望您有更具体的错误。

标签: vba excel


【解决方案1】:

您可以使用临时变量交换单元格公式/值。

Sub SwapCellFormulas(c1 as Range, c2 as Range)
    Dim temp as String: temp = c1.FormulaR1C1
    c1.FormulaR1C1 = c2.FormulaR1C1
    c2.FormulaR1C1 = temp
End Sub

Sub SwapCellValues(c1 as Range, c2 as Range)
    Dim temp: temp = c1.Value
    c1.Value = c2.Value
    c2.Value = temp
End Sub

感谢 Jeeped 建议使用 .FormulaR1C1 而不是 .Formula

【讨论】:

  • 我一直在考虑这些公式,但认为使用 .FormulaR1C1 会更好,因为确切的公式字符串是相同的。字面上传输的 xlA1 公式参考可能会混淆。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多