Zellenauswahl Makro, No Value
Hallo,
ich habe zwei Fragen:
1. Wisst Ihr wie ich mit einem Makro unterschiedliche Zellbereiche ansteuern kann?
Das Makro siehtr so aus:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Me.Range("E15:AZ20")) Is Nothing Then Exit Sub
Target = 1 + Target
If Target > 2 Then Target = 0
End Sub
Ich hättte gerne nicht nur E15 bis AZ20 sondern auch andere Bereiche gleichzeitig.
2. Wie kann ich Nullwerte so markieren, dass Sie in einem Diagramm nicht als Nullwert auftauchen? Ich habs mit na() probiert, hat aber nicht funktioniert.
viele Grüße
Richard
Antwort schreiben
Antwort 1 von Hajo_Zi vom 16.04.2020, 13:26 Options
Hallo Richard,
gabe es bei Diagramme keine Option Nullwerte nicht anzeigen?
Ansonsten #NV in die Zelle schreiben.
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim RaBereich As Range
' Bereich der Wirksamkeit
Set RaBereich = Range("A41:AN41")
' noch mehr Bereiche
' Set RaBereich = Union(Range("C11:AG11 , C13:AG13, C15:AG15 , C17:AG17 , C19:AG19 , C21:AG21 , C27:AE27 , C29:AE29, C31:AE31, C33:AE33"), _
' Range("C35:AE35, C37:AE37, C43:AG43, C45:AG45 , C47:AG47 , C49:AG49 ,C51:AG51 , C53:AG53 , C59:AF59 , C61:AF61 , C63:AF63 , C65:AF65"), _
' Range("C67:AF67 , C69:AF69 , C75:AG75 , C77:AG77 , C79:AG79 , C81:AG81 , C83:AG83 , C85:AG85 ,C91:AF91 , C93:AF93 , C95:AF95 , C97:AF97"), _
' Range("C99:AF99 , C101:AF101, C107:AG107 , C109:AG109 , C111:AG111 , C113:AG113 , C115:AG115 , C117:AG117 , C123:AG123 , C125:AG125"), _
' Range("C127:AG127 , C129:AG129 , C131:AG131 , C133:AG133 , C139:AF139 , C141:AF141 , C143:AF143 , C145:AF145 , C147:AF147 , C149:AF149"), _
' Range("C155:AG155, C157:AG157 , C159:AG159 , C161:AG161 , C163:AG163 , C165:AG165 , C171:AF171 , C173:AF173 , C175:AF175 , C177:AF177 "), _
' Range("C179:AF179 , C181:AF181, C187:AG187 , C189:AG189 , C191:AG191 , C193:AG193 , C195:AG195 , C197:AG197"))
' ab Vesion XP braucht der Schutz nicht aufgehoben werden
' Formatierung bei Schutz kann über Dialog Schutz eingestellt werden
' ActiveSheet.Unprotect ("Passwort")
' Zelle die in dem Bereich liegen auf die Varible schreiben
' damit werden nur noch die Zellen bearbeitet die im vorgegeben Bereich liegen
' jede Zelladresse ist einzeln angegeben
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
Target = 1 + Target
If Target > 2 Then Target = 0
End If
Set RaBereich = Nothing
End Sub
Gruß Hajo
Antwort 2 von rheym vom 16.04.2020, 14:20 Options
Hallo Hajo,
Setzt man vor das Range ein Union und danach in Klammern alle Bereiche, die man mit der Funktion belegen will?
Ich habs mal so probiert:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim RaBereich As Range
Set RaBereich = Union(Range("E15:AZ20 , A43:AZ48, A52:AZ57 , A79:AZ84"))
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
Target = 1 + Target
If Target > 2 Then Target = 0
End If
Set RaBereich = Nothing
End Sub
hat aber nicht funktioniert.
Das mit dem #NV funktioniert, Danke
Gruß
Richard
Antwort 3 von Hajo_Zi vom 16.04.2020, 15:48 OptionsLösung
Hallo Richard,
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim RaBereich As Range
Set RaBereich = Range("E15:AZ20 , A43:AZ48, A52:AZ57 , A79:AZ84")
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
Target = 1 + Target
If Target > 2 Then Target = 0
End If
Set RaBereich = Nothing
Cancel = True
End Sub
Gruß Hajo
Antwort 4 von rheym vom 16.04.2020, 17:36 Options
Halllo Hajo,
vielen Dank für Deine Hilfe
viele Grüße
Richard