Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

vba nummerierung
#1
Moin zusammen, ich bastel einen einem Code, der Folgendes können soll.

Ich wähle eine Zeile aus von Hand, dann soll mittels Makro eine neue Zeile darunter eingefügt werden und der Wert um die letzte Kommastelle um einen erhöht werden.

Bei den Zahlenreihen handelt es sich z. B. um 1.1, 1.1.1, 1.1.2, 1.1.2.1, 1.1.2.2, 1.2, 1.21, 1.22, 1.2.2.1, 1.2.2.2 usw.
Wenn ich also die Zeile mit dem Wert 1.1.2.2 auswähle muss wer Wert der hinzugefügten Zeile 1.1.2.3 sein.
Es soll immer die letzte Zahl um einen erhöht werden.

Was habe ich hinbekommen:
Das Zeileneinfügen funktioniert. Dann dachte ich mir ich kopiere den Wert der vorherigen Spalte um ihn dann entsprechend zu erhöhen, aber das ist wohl eher der falsche Ansatz und ich habe es nicht hinbekommen.

    Selection.EntireRow.Select
    Dim MyRange As Object
    Set MyRange = Selection
    Selection.EntireRow.Select
    Selection.Insert
    MyRange.Select
    ActiveCell.Offset(-2, 0).Select   
    ActiveCell.Copy
    ActiveCell.Offset(1, 0).Select
    ActiveCell.PasteSpecial Paste:=xlValues

Wie sollte ich vorgehen?

MfG
Björn
Antworten Top
#2
Hallöchen,

bist Du Dir sicher, dass das Zeileneinfügen wie gewünscht funktioniert?
Ich habe den Eindruck, dass die Zeile oberhalb eingefügt wird und nicht unterhalb.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Hallo

man kann auf viele Select verzichten, das vereinfacht die Sache.  Kompliziert und schwierig wird es aber, wenn man dem makro erklären muss  wie oft er ".1" anfügen muss, und ab wann  die letzte Stelle aufgezählt werden muss.  Da blicke ich auch noch nicht durch. 
Wenn du den Code aber verstanden hast kannst du das evtl. noch selbst anpassen.  Test bitte erst mal ob das Ergebnis okay ist.

mfg Gast 123

Code:
Sub Zeile_einfügen()
Dim n As Integer, az As Long  'az=aktive Zeile
Dim MyRange As Range, Txt As String
    az = Selection.Row
    Set MyRange = Selection
    Selection.EntireRow.Insert
    Cells(az - 1, 1).Copy Cells(az, 1)
    If InStr(Cells(az, 1), ".") Then
       n = Mid(Cells(az, 1), InStrRev(Cells(az, 1), ".") + 1)
       Txt = Left(Cells(az, 1), InStrRev(Cells(az, 1), "."))
       Cells(az, 1) = "'" & Txt & n + 1
    Else
       Cells(az, 1) = "'" & Cells(az, 1) & ".1"
    End If
    MyRange.Select
End Sub
Antworten Top
#4
Hallo,

Code:
Sub bbb()
  Dim varA As Variant, varN As Variant
  With ActiveCell
    varA = Split(.Value, ".")
    varN = varA(UBound(varA))
    If IsNumeric(varN) Then varN = varN + 1
    If UBound(varA) Then
      ReDim Preserve varA(UBound(varA) - 1)
      varN = Join(varA, ".") & "." & varN
    End If
    .Offset(1).EntireRow.Insert
    .Offset(1).Value = varN
    .Offset(1).Activate
  End With
End Sub

Gruß Uwe
Antworten Top
#5
@ schauan,
    Du hast recht.

@Gast123,
   die Zeile wird richtig eingefügt und die Nummer der vorherigen Zelle kopiert, aber nicht erhöht. Danke für den Versuch. Der Uwe hat die Lösung.

@Uwe,
   danke für die Lösung. Sie funktioniert!
   Leider habe ich nicht den ganzen Code verstanden und wollte fragen, ob Du so nett wärst, neben jede CodeZeile einen Einzeiler zur Erklärung hinzuzufügen?
   Danke!
Antworten Top


Gehe zu:


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