Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Zeile in Tabelle kopieren, dabei Format, Dropdown und Formeln behalten

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Zeile in Tabelle kopieren, dabei Format, Dropdown und Formeln behalten (2265 mal gelesen)
BMTS
Mitglied


Sehen Sie sich das Profil von BMTS an!   Senden Sie eine Private Message an BMTS  Schreiben Sie einen Gästebucheintrag für BMTS

Beiträge: 3
Registriert: 24.06.2015

erstellt am: 24. Jun. 2015 10:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

ich versuche eben mein erstes Excel-VBA zu schreiben. Das Ziel ist es einen Button zu haben, der mir eine neue Zeile einfügt, welche das gleiche Format, Dropdown-Menüs und Formeln besitzt wie die Zeile darüber, jedoch sollen keine Inhalte in den Zellen sein. Das kopieren und einfügen habe ich mit folgendem Code gelöst:

Code:
Sub CommandButton1_Click()
    If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    i = 8
    Do
        i = i + 1
    Loop While Cells(i, 1) <> ""
    If i = 9 Then
        Cells(i, 1) = 1
    Else
        Cells(i, 1) = Cells(i - 1, 1) + 1
        For j = 1 To 24
            Cells(i - 1, j).Activate
            Selection.Copy
            Cells(i, j).Activate
            Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
            Application.CutCopyMode = False
    Next j
    End If
End Sub


Das funktioniert auch erstmal hervorragend, sodass er immer unter die letzte ausgefüllte Zeile eine neue Zeile einfügt. Allerdings haben alle Zellen auch den Inhalt der Zelle davor. Wie lösche ich hier nun gezielt im letzten Schritt die Inhalte heraus, behalte jedoch die Formeln?

Ich habe mit

Code:
Selection.SpecialCells(xlCellTypeConstants).ClearContents

herumprobiert, aber dabei löscht er mir direkt alle Inhalte im ganzen Worksheet und noch dazu bricht er beim einfügen der neuen Zeile ab!

Ich müsste eigentlich nur nach dem einfügen der neuen Zeile sagen:
Lösche in der neuen Zeile alle Inhalte, behalte aber Zellen mit Formeln bei.


Jemand einen Tip wie das korrekt in den obigen Code implementiert wird?

Danke!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 24. Jun. 2015 14:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für BMTS 10 Unities + Antwort hilfreich

Hallo BMTS,
Willkommen im Forum 

So ganz klar ist mir Dein Anliegen noch nicht.
Ist denn gewährleistet dass unter den eingefügten Werten keine Daten mehr vorhanden sind?
Ansonsten wäre eine Vorgehensweise wie diese sicherer:

Code:

    Rows("35:35").Select
    Selection.Copy
    Rows("36:36").Select
    Selection.Insert Shift:=xlDown


Zum Löschen von Wertefeldern könntest Du dieses verwenden:
Code:

  For j = 1 To 24
    If Not Cells(i, j).HasFormula = True Then
      Cells(i, j).ClearContents
    End If
  Next j

Was meinst Du mit Dropdown-Menüs in der Zeile ?
Evtl. kannst Du ja ein Beispielarbeitsblatt hochladen

Grüße
Klaus 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

BMTS
Mitglied


Sehen Sie sich das Profil von BMTS an!   Senden Sie eine Private Message an BMTS  Schreiben Sie einen Gästebucheintrag für BMTS

Beiträge: 3
Registriert: 24.06.2015

erstellt am: 24. Jun. 2015 14:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Klaus,

vielen Dank für deine Antwort und danke fürs Willkommen heißen 

Ja unter den eingefügten Werten sind keine Daten mehr vorhanden, dort ist alles leer.

Wo genau binde ich diese For-Anweisung in meinen obigen code ein? Etwa so:


Code:

Sub CommandButton1_Click()
    If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    i = 8
    Do
        i = i + 1
    Loop While Cells(i, 1) <> ""
    If i = 9 Then
        Cells(i, 1) = 1
    Else
        Cells(i, 1) = Cells(i - 1, 1) + 1
        For j = 1 To 24
            Cells(i - 1, j).Activate
            Selection.Copy
            Cells(i, j).Activate
            Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
            Application.CutCopyMode = False
        For j = 1 To 24
        If Not Cells(i, j).HasFormula = True Then
        Cells(i, j).ClearContents
        End If
        Next j
    Next j
    End If
End Sub


Viele Grüße 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 24. Jun. 2015 14:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für BMTS 10 Unities + Antwort hilfreich

Hi,
schon mal den Code probiert?

Im Prinzip ja aber es geht auch einfacher wenn Du beim Zellenweisen kopieren bleiben möchtest

Code:

Sub CommandButton1_Click()
    If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    i = 8
    Do
        i = i + 1
    Loop While Cells(i, 1) <> ""
    If i = 9 Then
        Cells(i, 1) = 1
    Else
        Cells(i, 1) = Cells(i - 1, 1) + 1
        For j = 1 To 24
            Cells(i - 1, j).Activate
            Selection.Copy
            Cells(i, j).Activate
            Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
            Application.CutCopyMode = False
''        For j = 1 To 24 ' die Schleife muß ja nicht doppelt sein und 576 mal
                          ' durchlaufen werden
'' Hier bist Du ja schon an der richtigen Stelle
            If Not Cells(i, j).HasFormula = True Then
              Cells(i, j).ClearContents
            End If
''        Next j        ' Schleife hier überflüssig
        Next j
    End If
End Sub


Grüße
Klaus 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

BMTS
Mitglied


Sehen Sie sich das Profil von BMTS an!   Senden Sie eine Private Message an BMTS  Schreiben Sie einen Gästebucheintrag für BMTS

Beiträge: 3
Registriert: 24.06.2015

erstellt am: 24. Jun. 2015 15:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Klaus,

super, so funktioniert das wie ich will! Danke! 


Viele Grüße 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz