У меня проблема с копированием / вставкой из одного файла 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 ответ1

0

Проблема была с более новым файлом, но не сабом. Кто-то другой (общий мастер-файл), очевидно, оставил данные в нескольких ячейках. Я не уверен, почему это не вызвало ошибку на листе, на котором он находился, но возникло после копирования в более старый файл. Данные не были пробелом или 0, которые не отображались, поэтому формулы не знали, как с ними работать, и возвращали ошибки. Очистка содержимого ячеек в новом файле и сохранение исправили проблему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .