![]() |
Betrifft: Abänderung vom Code
von: Carl
Geschrieben am: 20.11.2014 17:50:31
Hallo,
ich würde gern diesen Code so abändern, dass er nur in bestimmten Spalten und Zellen greift.
Public r As Range Private Sub Worksheet_Change(ByVal Target As Range) For Each r In Target With r .HorizontalAlignment = xlCenter If (.Value - Int(.Value)) = 0 Then .NumberFormat = "0" Else .NumberFormat = "# ?/?" End If End With Next r End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Set r = Target End SubSiehe auch hier: https://www.herber.de/forum/archiv/1380to1384/t1383320.htm#1383320
![]() ![]() |
Betrifft: Target.Rows & Target.Columns
von: Frank
Geschrieben am: 21.11.2014 10:44:22
Hallo Carl,
Target as Range hat die Eigenschaften Rows und Columns, die man auswerten kann.
dazu müsstest Du den Code innerhalb der WITH-Anweisungen in zwei weitere IF-Abfrage einschliessen:
if .Rows=DeineZeile Then if .Columns=DeineSpalte Then .HorizontalAlignment = xlCenter ... End If end if end ifGrüsse,
![]() ![]() |
Betrifft: AW: Target.Rows & Target.Columns
von: Carl
Geschrieben am: 22.11.2014 12:41:03
Hallo Frank,
irgendwie komme ich da nicht ganz zurecht. Deshalbe führe ich die Zellen auf, wo der Code greifen soll. Es sind genau die Zellen, die auch im verlinkten Posting aufgeführt sind. Und zwar diese Zellen: A4 - M4, A11 - M11, A18 - M18 und A25 - M25. Ich habe leider erst jetzt bemerkt, dass es Probleme gibt, wenn man den Code in der kompletten Tabelle (Datei) verwendet. Denn es gibt auch Zellen, da stehen noch andere Kommazahlen drin. Und die sollen nicht verändert werden. Aber wenn ich in diese Zellen z.B 2,4 eingebe, dann wird aus der Zahl 2,4 die Zahl 2 2/5. Klar, ich könnte die betroffen Zellen entsprechen formatieren. Aber durch den Code fehlt auch noch "Rückgängig". Und darauf möchte ich nicht verzichten.
![]() ![]() |
Betrifft: AW: Target.Rows & Target.Columns
von: Crazy Tom
Geschrieben am: 22.11.2014 12:51:28
Hallo
so kannst du die Ausführung eines Makros nur auf bestimmte Bereiche einschränken
Dim rngBereich As Range Set rngBereich = Range("A4:M4, A11:M11, A18:M18, A25:M25") If Not Intersect(Target, rngBereich) Is Nothing Then '###hier dein Code### End If
![]() ![]() |
Betrifft: AW: Target.Rows & Target.Columns
von: Carl
Geschrieben am: 23.11.2014 11:21:03
Hallo Tom,
danke, aber leider ist mir unbekannt, welchen Teil vom Code ich wo und wie im Bereich '###hier dein Code### einzusetzen habe.
![]() ![]() |
Betrifft: AW: Target.Rows & Target.Columns
von: Crazy Tom
Geschrieben am: 23.11.2014 11:30:20
Hallo Carl
vielleicht passt es so?
Option Explicit Public r As Range Private Sub Worksheet_Change(ByVal Target As Range) Dim rngBereich As Range Set rngBereich = Range("A4:M4, A11:M11, A18:M18, A25:M25") If Not Intersect(Target, rngBereich) Is Nothing Then For Each r In Target With r .HorizontalAlignment = xlCenter If (.Value - Int(.Value)) = 0 Then .NumberFormat = "0" Else .NumberFormat = "# ?/?" End If End With Next r End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Set r = Target End Sub
![]() ![]() |
Betrifft: AW: Target.Rows & Target.Columns
von: Carl
Geschrieben am: 24.11.2014 11:07:53
Hallo Tom,
das funktioniert super. Vielen Dank. Nur noch eine kurze Frage:
Könnte man denn auch ohne "Nebenwirkungen" den Bereich im Code so gestalten, wenn die Eingabe trotzdem nur in den vorher benannten Zellen erfolgt?
Set rngBereich = Range("A4:M25")
![]() ![]() |
Betrifft: AW: Target.Rows & Target.Columns
von: Crazy Tom
Geschrieben am: 24.11.2014 11:21:05
Hallo
hierbei
Set rngBereich = Range("A4:M25")
![]() ![]() |
Betrifft: AW: Target.Rows & Target.Columns
von: Carl
Geschrieben am: 24.11.2014 13:12:56
Hallo Tom,
"und das wolltest du laut deiner Vorgabe ja nicht..."
Dein Code passt schon. Und "Rückgängig" funktioniert auch in den Zellen wo Dein Code nicht greifen soll. Aber der Hintergedanke von meiner Frage war der:
Der ursprüngliche Code wirkt sich ja auf alle Zellen der Tabelle aus. Und in (z.B.) A29:M29 stehen Zahlen, da soll dieser Code nicht greifen (siehe meine Antwort an Frank). Fest sind nur die Zellen A4:M25. Zwischen A4:M25 steht zwar auch Text, und auch Wochentage in Zahlen (z.B. 04.10.), aber da wirkt sich ja der Code nicht negativ aus.
![]() |