首页 文章

Excel VBA:如何在vba代码中复制双击/单元格编辑操作

提问于
浏览
0

我在Excel工作簿中有3个工作表 . Sheet1,Sheet2和Sheet3的布局相同 . 我正在使用Sheet3来评估Sheet1和Sheet2中的值是否相同 .

我试图比较两个相同的列时遇到问题; Sheet1中的A列和Sheet2中的A列 . Sheet2中的列A是包含一系列文本值的列 . 此列中的单元格在单元格的左上角显示绿色箭头 .

我有一个循环通过Sheet1,A列中的单元格的过程,通过Selection.NumberFormat =“@”将单元格值更改为文本 .

在Sheet3中,我有一个公式比较Sheet1-Column A中的单元格值和Sheet2-Column A中的单元格值,对于此比较,公式最初计算为“NO” . 但是,在过程运行后双击Sheet1-A列中的单元格后,公式将更新为“”(表示值相等)

Sheet1-Column A  cell a1 value = 1234
Sheet2-Column A  cell a1 value = 1234 (Green arrow in upper left corner)
Sheet3-Column A, cell a1 value = "NO"

双击Sheet1-A列中的单元格a1,Sheet3-A列中的公式,单元格a1的计算结果为“”,表示值相等 . 绿色箭头现在显示在Sheet1-Column A中单元格a1的左上角

我想通过vba代码做的是复制双击鼠标行为来更新每个单元格中的显示,这样绿色箭头将显示在Sheet1-Column A中每个单元格的左上角

1 回答

  • 0

    您可以使用VBA重新声明单元数据

    手动完成此操作,双击,然后触摸Enter键或使用F2 . 如果我们开始运行:

    Public Sub setttup()
        With Range("A1:A3")
            .Clear
            .NumberFormat = "@"
            Range("A1").Value = "=6+7"
            Range("A2").Value = "=7+11"
            Range("A3").Value = 12345
            .NumberFormat = "General"
        End With
    
        Range("B1").Formula = "=A1+1"
    End Sub
    

    我们有这样的结果:

    enter image description here

    我们仍然需要"fix" cells A1A2

    我们可以使用以下方法,而不是手动重新声明数据:

    Public Sub FixUp()
        With Range("A1:A3")
            .Value = .Value
        End With
    End Sub
    

    结果如下:

    enter image description here

    另一种方法是使用 SendKeys 循环 . 但是对于大量数据来说这要慢得多 .

相关问题