Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
880to884
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
880to884
880to884
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA Lösung bitte gesucht

VBA Lösung bitte gesucht
04.07.2007 07:19:00
Josef
Hallo!
Ich würde bitte für ein Worksheet_Change Ereignis folgende VBA Lösung suchen:
Bei einem bereits bestehenden Worksheet_Change Ereignisses wird bei einem Eintrag einer Nr. (z.B. 1112720) in der Spalte J in der Tabelle "Ausprägungen" diese Nr. automatisch in der Tabelle1 in der Spalte C in der nächsten freien Zelle eingetragen.
Nachdem der Eintrag erfolgt ist sollen 6 Stellen dieser Nummer in drei Teile gesplittet werden und in den Spalten AD,AE,AF an der jeweils nächsten freien Stelle (Zelle) eingetragen werden.
Das Ergebnis sollte dann so aussehen:
AD=11,AE=12,AF=72
wie würde hier bitte eine VBA Lösung aussehen?
Danke
Josef

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Lösung bitte gesucht
04.07.2007 08:19:00
Hajo_Zi
Hallo Josef,

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LoLetzte As Long
If Target.Count > 1 Then Exit Sub
If Target.Column = 10 Then
Application.EnableEvents = False
With Worksheets("Ausprägungen")
'               letzte belegte Zeile unabhängig von Excelversion für Spalte C (3)
LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 3)), .Cells(.Rows.Count, 3).End(xlUp) _
.Row, .Rows.Count) + 1
.Cells(LoLetzte, 3) = Target
If Len(Target) >= 6 Then
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 30)), Cells(.Rows.Count, 30).End( _
xlUp).Row, Rows.Count) + 1
Range("Ad" & LoLetzte) = Left(Target, 2)
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 31)), Cells(.Rows.Count, 31).End( _
xlUp).Row, Rows.Count) + 1
Range("AE" & LoLetzte) = Mid(Target, 3, 2)
Range("AF" & LoLetzte) = Mid(Target, 5, 2)
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 32)), Cells(.Rows.Count, 32).End( _
xlUp).Row, Rows.Count) + 1
End If
End With
Application.EnableEvents = True
End If
End Sub


Da Du Deinen vorhanden Code nicht gepostest hast mußt Du ihn selber einbauen, da ich es ablehne über das Internet auf fremde Rechner zu schauen.

Anzeige
AW: VBA Lösung bitte gesucht
04.07.2007 11:19:00
Josef
Hallo Hajo!
Danke für Deine Antwort.
Habe den Code jetzt so angepasst und im worksheet Change Ereignis vom Arbeitsblatt Ausprägungen eingefügt:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim LoLetzte As Long
If Target.Count > 1 Then Exit Sub
If Target.Column = 10 Then
Application.EnableEvents = False
With Worksheets("Tabelle1")
'               letzte belegte Zeile unabhängig von Excelversion für Spalte C (3)
LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 3)), .Cells(.Rows.Count, 3).End(xlUp) _
_
.Row, .Rows.Count) + 1
.Cells(LoLetzte, 3) = Target
If Len(Target) >= 6 Then
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 30)), Cells(.Rows.Count, 30).End(  _
_
xlUp).Row, Rows.Count) + 1
Range("Ad" & LoLetzte) = Left(Target, 2)
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 31)), Cells(.Rows.Count, 31).End(  _
_
xlUp).Row, Rows.Count) + 1
Range("AE" & LoLetzte) = Mid(Target, 3, 2)
Range("AF" & LoLetzte) = Mid(Target, 5, 2)
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 32)), Cells(.Rows.Count, 32).End(  _
_
xlUp).Row, Rows.Count) + 1
End If
End With
Application.EnableEvents = True
End If
End Sub


Wenn ich jetzt im Arbeitsblatt "Ausprägungen" in der Spalte J eine Nr. eingebe so wird diese im Arbeitsblatt "Tabelle1" in der Spalte C richtig eingetragen.
Die Splittung erfolgt erfolgt jedoch im Arbeitsblatt "Ausprägungen" und nicht im Arbeitsblatt "Tabelle1".
Die Splittung sollte in der Tabelle1 Spalte AD,AE,AF eingetragen werden. Dann würde allles bestens passen. Wo müßte ich hier bitte den Code noch verändern?
Danke
Josef

Anzeige
AW: VBA Lösung bitte gesucht
04.07.2007 11:25:00
Hajo_Zi
Hallo Josef,
ich habe mich Wort für Wort an Deinen Beitrag gehalten, da Stand nichts das es in der anderen Tabelle aufgeteilt werden soll. Mache vor den Range ein Punkt .Range("Ad" ....
Gruß Hajo

AW: VBA Lösung bitte gesucht
05.07.2007 13:21:33
Josef
Hallo Hajo!
Danke für Deine Mühe und Deine Hilfe
Josef

Korrektur zu meinem Beitrag
05.07.2007 08:33:00
Matthias
Hallo
Der Korrektheit halber ...
Korrektur zu meinem Beitrag
Dieser, in der Datei stehende Code:
  • Cells(lz_AD, "AD") = lz_AD

  • Cells(lz_AE, "AE") = lz_AE

  • Cells(lz_AF, "AF") = lz_AF

  • muss ersetzt werden in:
  • Cells(lz_AD, "AD") = Teil1

  • Cells(lz_AE, "AE") = Teil2

  • Cells(lz_AF, "AF") = Teil3

  • da hatte ich glatt die Variablen vertauscht ;-)
    Link zur Datei
    Gruß Matthias

    Anzeige
    AW: Korrektur zu meinem Beitrag
    05.07.2007 13:20:54
    Josef
    Hallo Matthias!
    Danke für Deine Antwort und Deine Hilfe. Werde es mir heute noch ansehen.
    Schönen Tag noch
    Josef

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige