2016-09-14 3 views
0

Ich möchte einfach den Doppelklick verwenden, um Inhalt Feature auf VBA zu löschen.automatisch anzeigen "Bitte geben Sie hier Text" in bestimmte Zelle

Ich habe eine Zelle (B5) um genau zu sein, die "Bitte Text hier eingeben" anzeigen muss, wenn es keinen Text in dieser Zelle gibt und sobald der Benutzer die Zelle doppelt klickt, wird es löschen und Benutzern erlauben, ihre einzugeben gewünschter Text Wenn die Benutzer es verlassen und es ist leer, wie ich sagte, sollte es angezeigt werden "Bitte geben Sie hier Text ..."

Antwort

0

Nie zuvor so entschuldigt, wenn das falsch ist, aber das scheint zu funktionieren. Platzieren Sie den folgenden Code in den Arbeitsblättern.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
    If Not Intersect(ActiveCell, Cells(5, 2)) Is Nothing Then Target.Clear 
End Sub 


Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    If Cells(5,2).Value = "" Then Cells(5,2).Value = "Please enter text." 
End Sub 
+0

Das ist gut! Es funktioniert, aber ich schütze mein Arbeitsblatt, damit niemand anders meine anderen Zellen bearbeiten oder ändern kann. Für diese spezifische b5-Zelle, wenn ich doppelklicke, sieht es so aus, als ob sie das Format dieser Zelle von der Freigabe in die Sperrung ändert. Gibt es einen Weg dahin? –

+0

Ändern Sie die .Clear in .Value = "" –

+0

Mate Sie sind eine Legende –

0

Sie erklärte '... und erlauben Benutzern, ihre gewünschten Text eingeben.' Ich gehe von einem General Zellenformat für den vom Benutzer eingegebenen Text aus.

In dem Codefenster des Arbeitsblatt:

Option Explicit 

'you can only double click a single cell so 
'no worries about Target being more than one cell here 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 
    If Not Intersect(Cells(5, "B"), Target) Is Nothing Then 
     'Cancel = True 'only if you want to disable 'in-cell' editing 
     On Error GoTo bm_Safe_Exit 
     With Target 
      If .Value2 = "please enter text here..." Then 
       Application.EnableEvents = False 
       .Clear 
      End If 
     End With 
    End If 
bm_Safe_Exit: 
    Application.EnableEvents = True 
End Sub 

'there is a worry about Target being more than one cell here 
Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Cells(5, "B"), Target) Is Nothing Then 
     On Error GoTo bm_Safe_Exit 
     Application.EnableEvents = False 
     Dim tmp As Variant 
     With Cells(5, "B") 
      If Not CBool(Len(.Value2)) Then 
       .Font.ColorIndex = 10 
       .Font.Italic = True 
       .Value = "please enter text here..." 
       .NumberFormat = "<@>" 
      Else 
       tmp = .Value 
       .Clear 
       .Value = tmp 
      End If 
     End With 
    End If 
bm_Safe_Exit: 
    Application.EnableEvents = True 
End Sub 

'special cases when B5 is double-clicked but no input provided 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    With Cells(5, "B") 
     If Not CBool(Len(.Value2)) Then 
      Application.EnableEvents = False 
      .Font.ColorIndex = 10 
      .Font.Italic = True 
      .Value = "please enter text here..." 
      .NumberFormat = "<@>" 
     End If 
    End With 
bm_Safe_Exit: 
     Application.EnableEvents = True 
End Sub 

Dies scheint zu decken everything¹ ich es warf, während die Rechenzeit und Aufwand zu minimieren. Es bietet eine rudimentäre Fehlerkontrolle, um eine stabile Benutzerumgebung aufrechtzuerhalten.


¹ Bitte fragen Sie mich nicht, etwas zu erklären, ohne vorher Ihre eigene Forschung zu tun. Wenn Sie einen bestimmten Punkt finden, mit dem Sie Schwierigkeiten haben, werde ich mich bemühen, Ihnen zu helfen. Wenn Sie ein Konzept nicht verstehen können, dann nehmen Sie einen Kurs, es ist jenseits des Rahmens dieses Ortes, alles zu erklären.

Verwandte Themen