Bir Excel dosyasından diğerine kopyalayıp yapıştırırken sorun yaşıyorum.
Veri girmek için formlar içeren bir çalışma kitabım var. Son zamanlarda, giriş hücrelerini otomatik olarak büyük harf yapmak için bir alt ekledim.
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
Şimdi, boş hücrelerin aynı dosyanın daha eski bir sürümüne alt olmadan karıştırıldığı bir hücre aralığını (Örn: B2: B12) kopyalayıp yapıştırdığımda , boş hücrelerin bazıları formül sorunlarına neden oluyor. Yapıştırılan boş hücreler etkinleştiğinde bu durum kaybolur (çift tıklatıldığında veya silindiğinde).
Dosyanın eski sürümünü, birden fazla kişiye dağıtıldığı ve hepsini düzeltmek imkansız olacağı için bir yöntemim yok.
Bu, soruna neden olan tüm boş hücreler olmadığı ve her zaman aynı hücreler olmadığı için rastgele gerçekleşiyor gibi görünmektedir. Hücrede gerçekte ne olduğunu bulmak için = CODE (), = VALUE (), = ISTEXT (), = ISNUMBER () denedim, ancak hücrenin metin olduğu herhangi bir değer alamıyorum giriş hücreleri metin olarak biçimlendirilir).
Ortaya çıkabilecek soruları denemek ve cevaplamak için:
Yalnızca değerleri vb. Kopyalayıp yapıştırmak aynı sayıyla sonuçlanır.
Her dosyanın içine kopyalamak / yapıştırmak sorunsuz çalışır
Eski dosyadan yeni dosyaya geçmek
Her seferinde tüm "boş" hücrelerden "değerleri" girip "silmekten" kısa bir süre önce, bu boş yapıştırılan hücrelerin eski dosyada etkinleştirilmesi gerekmek üzere ortaya çıkmasını önlemenin bir yolu var mı? Sorunun bu dosyanın önceki sürümlerinde olmadığı için alttan kaynaklandığını varsayıyorum.
EDIT Söz konusu sayfalardan birinin kodunun tamamı:
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
F9
Yapıştırdıktan sonra doğrudan basmaya ne dersiniz ?