Bir hücre belli mektup içeriyorsa VBA Kod otomatik bir yorum eklemek için

oy
0

Sadece geçen hafta VBA öğrenmeye başladı ve şimdi aşağıdaki sorunu çözmeye çalışıyorum: Kullanıcıların, daha sonra bir açıklama seçilen hücreye otomatik eklenmelidir Belirli bir harfle (ve sadece bu belirtilen harfler) yazarsanız. Yorum kullanıcı tarafından girilen küçük bir başlığını ve ardından bir açıklama metni içermelidir. gösterilen kod aslında çalıştı, ama sadece ilk hücre için ben bunu test ettik. İlk seferinde çalıştırıldığında yani, açıklamaya otomatik olarak ben amaçlandığı gibi belirtilen metin ile göründü, ama bir sonraki hücrede öyle olmadı. Hatta Excel yardımcı olmadı yeniden başlatmayı - şimdi bile ilk hücre yorumu oluşturmaz. Kafam karışık nedeni budur.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim x

Application.EnableEvents = False

If Target.Value =  Then

    Application.Undo
    x = Target.Value
    Target.Value = 
    On Error Resume Next

    If (x = A) Or (x = B) Or (x = C) Or (x = D) Or (x = E) Then Target.Comment.Delete
    On Error GoTo 0   

ElseIf Target.Value = A Then
    Target.AddComment (explanationA: )

ElseIf Target.Value = B Then
    Target.AddComment explanationB: 

ElseIf Target.Value = C Then
    Target.AddComment explanationC: 

ElseIf Target.Value = D Then
    Target.AddComment explanationD: 

ElseIf Target.Value = E Then
    Target.AddComment explanationE: 

End If
End Sub

Ben çalışma sayfası ve Değişim için belirttiniz.

Kullanıcı el yorumunu seçmenize gerek kalmadan bazı açıklayıcı bilgiler yazabilirsiniz böylece otomatik olarak oluşturulduktan sonra yorum, seçer excel bir olasılık var olduğu: Benim için ilgi olacağını ek bir soru da vardır?

Yardım takdir! Şimdiden çok teşekkür ederim!

Oluştur 10/10/2019 saat 00:38
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
0

Sen kullanabilirsiniz Option Compare Texttüm modül harf duyarsız olması için karşılaştırmalar izin vermek için modülün bildirimler bölümünde (üstte) de.

alt rutin "MyCompare" dahilinde kod özdeş olmasına rağmen, onların sonuç farklıdır:

Sub MyCompare

    Debug.print "a" = "A"
    ' Prints False

End Sub

Option Compare Text

Sub MyCompare

    Debug.Print "a" = "A"
    ' Prints True

End Sub

Ama neyse, senin dönelim asıl sorun. Bu kodunuzda bu hat ile açıklanmıştır:

Application.EnableEvents = False

Eğer yakalanan çünkü kod ilk kez çalıştı sebebi edin Worksheet_Changeolay. Ama şimdi sadece bu kod içindeki olayları devre dışı ve asla bu nedenle artık çalıştırmak mümkün olacak, tekrar döndü Worksheet_Changealtyordamını.

Sadece kodunuzu çıkmadan önce tekrar açmak için emin olun. Ayrıca, zamanından önce devre dışı tutmak istiyorum kodunuzu, durdurma yerine olayları sağlayacak şekilde hataları işlemek için akıllıca olacaktır.

Genellikle bir Sub çalıştırmadan olayları etkinleştirmek yolu ayıklama penceresini kullanmaktır. Basın Ctrl+ GVBE içinde, bu pencereyi açın pencere içinde sadece yazmak için Application.EnableEvents = Truebasın Returnve acısını özelliğini değiştirmek ettik.

Cevap 10/10/2019 saat 02:55
kaynak kullanıcı

oy
0

hızlı ve kolay bir şey bu aşağıda gibi olacaktı;

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Select Case Target.Cells
    Case Is = "A": Target.AddComment ("explanationA: ")
    Case Is = "B": Target.AddComment ("explanationB: ")
    Case Is = "C": Target.AddComment ("explanationC: ")
    Case Is = "D": Target.AddComment ("explanationD: ")
    Case Is = "E": Target.AddComment ("explanationE: ")
End Select
On Error Resume Next
End Sub

Sadece bunu üzerine gelmesini istiyorum sayfasındaki kod koymak hatırlamak ve aynı zamanda onun harf duyarlı görünmektedir.

Cevap 10/10/2019 saat 01:15
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more