Excel 2010:空白粘贴单元格需要激活,从而导致公式问题

Excel 2010:空白粘贴单元格需要激活,从而导致公式问题

我在从一个 Excel 文件复制/粘贴到另一个 Excel 文件时遇到了问题。

我有一个工作簿,里面有用于输入数据的表格。最近,我添加了一个子程序,用于自动将输入单元格的首字母大写。

Private Sub Worksheet_Change(ByVal Target As Range)
    '   Code goes in the Worksheet specific module
    Dim rng As Range
        '   Set Target Range, i.e. Range("A1, B2, C3"), or Range("A1:B3")
        Set rng = Target.Parent.Range("B11:C47")
             '   Only look at single cell changes
            If Target.Count > 1 Then Exit Sub
            '   Only look at that range
            If Intersect(Target, rng) Is Nothing Then Exit Sub
            '   Action if Condition(s) are met (do your thing here...)
            Application.EnableEvents = False
                Target.Value = UCase(Application.WorksheetFunction.Substitute(Target.Value, " ", ""))
            Application.EnableEvents = True
End Sub

现在,当我复制并粘贴包含空单元格的单元格区域(例如:B2:B12)到同一文件的旧版本时没有子目录中,一些空白单元格会导致公式问题。如果激活(双击或删除)粘贴的空白单元格,此问题就会消失。

我无法修改文件的旧版本,因为它已分发给多人,不可能全部纠正。

这似乎是随机发生的,因为并非所有空单元格都会导致此问题,而且问题并不总是发生在相同的单元格中。我尝试使用 =CODE()、=VALUE()、=ISTEXT()、=ISNUMBER() 来查找单元格中实际的内容,但我无法获得任何值,只是单元格是文本(因为所有输入单元格的格式都是文本)。

尝试回答可能出现的任何问题:

  • 复制/粘贴值等...会导致同样的问题

  • 在每个文件内复制/粘贴都没有问题

  • 从旧文件转到新文件有效

除了每次进入并“删除”所有“空”单元格中的“值”之外,有没有办法防止这些空的粘贴单元格在旧文件中出现并需要激活?我假设问题出在子文件中,因为此问题的出现并不存在于该文件的先前版本中。

编辑 其中一张表的全部代码:

Private Sub Worksheet_Activate()

End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As     Boolean)

End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

End Sub

Private Sub Worksheet_Calculate()

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
'   Code goes in the Worksheet specific module
Dim rng As Range
    '   Set Target Range, i.e. Range("A1, B2, C3"), or Range("A1:B3")
    Set rng = Target.Parent.Range("B11:C47")
         '   Only look at single cell changes
        If Target.Count > 1 Then Exit Sub
        '   Only look at that range
        If Intersect(Target, rng) Is Nothing Then Exit Sub
        '   Action if Condition(s) are met (do your thing here...)
        Application.EnableEvents = False
            Target.Value = UCase(Application.WorksheetFunction.Substitute(Target.Value, " ", ""))
        Application.EnableEvents = True
End Sub

Private Sub Worksheet_Deactivate()

End Sub

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

End Sub

Private Sub Worksheet_PivotTableAfterValueChange(ByVal TargetPivotTable As PivotTable, ByVal TargetRange As Range)

End Sub

Private Sub Worksheet_PivotTableBeforeAllocateChanges(ByVal TargetPivotTable As PivotTable, ByVal ValueChangeStart As Long, ByVal ValueChangeEnd As Long, Cancel As Boolean)

End Sub

Private Sub Worksheet_PivotTableBeforeCommitChanges(ByVal TargetPivotTable As PivotTable, ByVal ValueChangeStart As Long, ByVal ValueChangeEnd As Long, Cancel As Boolean)

End Sub

Private Sub Worksheet_PivotTableBeforeDiscardChanges(ByVal TargetPivotTable As PivotTable, ByVal ValueChangeStart As Long, ByVal ValueChangeEnd As Long)

End Sub

Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)

End Sub

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

答案1

问题出在新文件上,而不是子文件上。其他人(共享主文件)显然在一些单元格中留下了数据。我不确定为什么这不会在它所在的工作表上导致错误,但在复制到旧文件后却导致错误。数据不是未显示的空格或 0,因此公式不知道如何处理它并返回错误。清除新文件上单元格的内容并保存解决了该问题。

相关内容