VBA kód automatikusan hozzáadni egy megjegyzést, ha egy sejt tartalmaz egy bizonyos levél

szavazat
0

Én csak most kezdtem tanulni VBA múlt héten és most próbálják megoldani a következő problémát: ha a felhasználó beír egy bizonyos levél (és csak ezek meghatározott betűk), akkor egy megjegyzést kell hozzá automatikusan a kijelölt cella. A megjegyzés tartalmaznia kell egy kis „fejléc”, majd egy magyarázó szöveg, amelyet beírt a felhasználó. A bemutatott kód valójában működött, de csak az első cella teszteltem azt. Tehát, amikor végre ez az első alkalom, a megjegyzés automatikusan megjelent a megadott szöveget akartam, de a szomszéd cellában nem. Még újraindítása Excel nem segít - így most már az első cella nem hozza létre a megjegyzést. Ezért vagyok zavarodva.

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

Én meg, hogy „munkalap” és „Change”.

Van még egy további kérdés, ami érdekes lehet számomra: van-e lehetőség, hogy az Excel automatikusan kiválasztja a megjegyzés után keletkezett, így a felhasználó beírhat bizonyos magyarázó információkat anélkül, hogy válassza ki a megjegyzés kézzel?

Segítséget előre is köszönjük! Előre is köszönöm szépen!

A kérdést 10/10/2019 00:38
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
0

Használhatja Option Compare Texta nyilatkozatok rész (felső) a modul lehetővé teszi az összehasonlítást a teljes modul a kis- és nagybetűket.

Bár a kód a sub rutin „MyCompare” azonos, azok eredményeiről, más:

Sub MyCompare

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

End Sub

Option Compare Text

Sub MyCompare

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

End Sub

De egyébként is, térjünk a tényleges problémát. Ez ezen a vonalon a kódban:

Application.EnableEvents = False

Figyeljük meg az oka a kódot dolgozott először volt, mert elfoglalták a Worksheet_Changerendezvény. De most már csak le van tiltva események ezt a kódot, és soha nem fordult vissza, így akkor már nem lesz képes futtatni a Worksheet_Changeszubrutin.

Csak győződjön meg róla, hogy kapcsolja vissza, mielőtt kilép a kódot. Továbbá, nem lenne bölcs dolog, hogy kezeli a hibákat oly módon, hogy lehetővé teszi az események inkább, mint idő előtt leállítja a kódot, ami tartja őket tiltva.

Ahogy én általában lehetővé teszik események futtatása nélkül Sub a hibakereső ablakot. Nyomja Ctrl+ Ga VBE Az ablak megnyitásához, majd az ablakon belül egyszerűen írja Application.EnableEvents = True, majd nyomja meg Return, és akkor már csak megváltoztatni, hogy a tulajdon.

Válaszolt 10/10/2019 02:55
a forrás felhasználó

szavazat
0

Valami gyors és egyszerű lenne, mint ez alább;

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

Ne feledd, hogy a kódot a lapon azt szeretné, hogy történni, és úgy tűnik, hogy a kis- és nagybetűk is.

Válaszolt 10/10/2019 01:15
a forrás felhasználó

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