VBA Codes zusammenlegen
#11
Hallo nochmal,

jetzt habe ich das Problem das man bei den spalten F,G,H,I keine Uhrzeit mehr eingeben kann ! :s

Das liegt an dem Target UCase ! Dodgy

Gibt es eine Möglichkeit F,G,H,I auszuklinken ?
Top
#12
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Count = 1 Then
         If Target.Row > 3 And Target.Column > 4 And Target.Column < 9 Then
           Application.EnableEvents = False
           If Not IsNumeric(Target) Then Target = UCase(Target)
           If Target.Column = 5 Then Target.Offset(, -1) = IIf(IsEmpty(Target), "", Date)
        End If
   End If
   Application.EnableEvents = True
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • mazor78
Top
#13
Unsprungscode war dieser hier !

Bei diesem code kann ich keine Zeitwerte 00:00  in die Zellen F,G,H,I einfügen.




Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    Application.EnableEvents = False
    If Not Intersect(Target, Range("E4:E1048576")) Is Nothing Then
       If Target.Count = 1 Then  'Bearbeiten mehrerer Zeilen wird abgefangen
           If Target = "" Then
               Target.Offset(0, -1) = ""
           Else
               Target.Offset(0, -1) = Now
           End If
       End If
    End If
    If Not Intersect(Target, Range("B4:J1048576")) Is Nothing Then
        If Target.Count = 1 Then  'Bearbeiten mehrerer Zeilen wird abgefangen
            If Not IsEmpty(Target) Then
                Target = UCase(Target)
            End If
        End If
    End If
    Application.EnableEvents = True
    On Error GoTo 0
End Sub
Top
#14
Hallo,

statt Spalten auszuschließen, kannst Du auch abfragen ob eine Zahl eingegeben wurde:


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   On Error Resume Next
   Application.EnableEvents = False
   If Not Intersect(Target, Range("E4:E1048576")) Is Nothing Then
      If Target.Count = 1 Then  'Bearbeiten mehrerer Zeilen wird abgefangen
          If Target = "" Then
              Target.Offset(0, -1) = ""
          Else
              Target.Offset(0, -1) = Now
          End If
      End If
   End If
   If Not Intersect(Target, Range("B4:J1048576")) Is Nothing Then
       If Target.Count = 1 Then  'Bearbeiten mehrerer Zeilen wird abgefangen
           If Not IsEmpty(Target) Then
               If Not IsNumeric(Target) Then Target = UCase(Target)
           End If
       End If
   End If
   Application.EnableEvents = True
   On Error GoTo 0
End Sub



oder Du benennst die Bereiche richtig:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   On Error Resume Next
   Application.EnableEvents = False
   If Not Intersect(Target, Range("E4:E1048576")) Is Nothing Then
      If Target.Count = 1 Then  'Bearbeiten mehrerer Zeilen wird abgefangen
          If Target = "" Then
              Target.Offset(0, -1) = ""
          Else
              Target.Offset(0, -1) = Now
          End If
      End If
   End If
   If Not Intersect(Target, Union(Range("B4:E1048576"), Range("J4:J1048576"))) Is Nothing Then
       If Target.Count = 1 Then  'Bearbeiten mehrerer Zeilen wird abgefangen
           If Not IsEmpty(Target) Then
                Target = UCase(Target)
           End If
       End If
   End If
   Application.EnableEvents = True
   On Error GoTo 0
End Sub





trotzdem hier, wie man Spalten aus den benannten Bereichen ausschließen kann:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   On Error Resume Next
   Application.EnableEvents = False
   If Not Intersect(Target, Range("E4:E1048576")) Is Nothing Then
      If Target.Count = 1 Then  'Bearbeiten mehrerer Zeilen wird abgefangen
          If Target = "" Then
              Target.Offset(0, -1) = ""
          Else
              Target.Offset(0, -1) = Now
          End If
      End If
   End If
   If Not Intersect(Target, Range("B4:J1048576")) Is Nothing Then
     Select Case Target.Column
       Case Is <> 6, 7, 8, 9
       If Target.Count = 1 Then  'Bearbeiten mehrerer Zeilen wird abgefangen
           If Not IsEmpty(Target) Then
               If Not IsNumeric(Target) Then Target = UCase(Target)
           End If
       End If
     End Select
   End If
   Application.EnableEvents = True
   On Error GoTo 0
End Sub
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • mazor78
Top
#15
@Att

Schon meinen Beitrag beobachtet ?
Top
#16
Hallo snb,

ja.

Aber dat will er nich. Blush
Ich hatte vorher auch einen zusammengefassten Code gepostet, welchen er auch ignoriert.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • mazor78
Top
#17
Ne Ne,

Ich habe gar nix ignoriert ! Angel

Ich habe es über If Not IsNumeric(Target) Then umgeschrieben





Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    Application.EnableEvents = False
    If Not Intersect(Target, Range("E4:E1048576")) Is Nothing Then
       If Target.Count = 1 Then  'Bearbeiten mehrerer Zeilen wird abgefangen
           If Target = "" Then
               Target.Offset(0, -1) = ""
           Else
               Target.Offset(0, -1) = Now
           End If
       End If
    End If
    If Not Intersect(Target, Range("B4:J1048576")) Is Nothing Then
        If Target.Count = 1 Then  'Bearbeiten mehrerer Zeilen wird abgefangen
            If Not IsNumeric(Target) Then
                Target = UCase(Target)
            End If
        End If
    End If
    Application.EnableEvents = True
    On Error GoTo 0
End Sub
Top
#18
Du hast die einfachste Lösung ingnoriert:

http://www.clever-excel-forum.de/thread-...l#pid67755
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste