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