[Excel] Änderungen in Datei/Tabellenblatt beim Beenden schnell durchführen.

josef24

Erfahrenes Mitglied
Hallo zusammen. Ich komme mal wieder mit einem VBA Code der, was er machen soll, nicht erledigt, und bitte hierfür um Hilfe.
Ich möchte aus einer Userform heraus Änderungen aus der Tabelle4 mit unterschiedlicher Spalten in mehreren Tabellen kopieren.
Inhalte in Tabelle4 müssen erhalten bleiben. Dazu habe ich einen Versuch mit VBA-Code erstellt der zwar keinen Fehler produziert,
aber auch die Kopierfunktion nicht erfüllt. P.S. Habe mich um bestmögliche Lesbarkeit bemüht.

Gruß Josef



Visual Basic:
Private Sub CommandButton4_Click() ' Eingabemaske schließen
Dim intTabelle As Integer ' und gleichzeitig alle Tabellenblätter ausblenden
Dim sn As Integer, sh As Integer

    For intTabelle = 1 To ActiveWorkbook.Worksheets.Count
    If ActiveWorkbook.Worksheets(intTabelle).Name <> "Auswahl Klick" Then
    ActiveWorkbook.Worksheets(intTabelle).Visible = False
            End If
        Next intTabelle
                
    Call M_Tab_Teiln  ' MACRO für Werte in die entsprechenden Tabellen übernehmen
    
        Call M_Post
        
            Call M_Problem
            
                Call TabStat
                
                Call M_snb(sn, sh)
        
        Unload Me
        
         With Worksheets("ArbTab") ' Das eben eingefügt
 
    End With

End Sub
Sub M_Tab_Teiln()
        M_snb Array(5, 4, 9, 12, 2, 15), "S_Tab_Teiln"
End Sub

Sub M_Post()
        M_snb Array(3, 4, 5, 6, 7, 8, 15, 14), "S_Post"
End Sub
Sub M_Problem()
        M_snb Array(2, 4, 5, 13, 15, 21, 14, 12), "S_Problem"
End Sub
Sub M_snb(sn, sh)
Dim j As Integer
    With sh
'  Set sh = Tabelle4
            Set sh = Worksheets("ArbTab")  ' Aus dieser Tabelle die Spalten kopieren
                .UsedRange.ClearContents
            For j = 0 To UBound(sn)
        .UsedRange.Columns(sn(j)).Copy .Cells(1, j + 1)
    Next
    
  End With
 
End Sub
 

Yaslaw

alter Rempler
Moderator
1) Was macht M_snb Array() ?
2) In welcher Zeile sollte denn kopiert werden? Ich sehe nirgens ein Copy-Befehl
 

josef24

Erfahrenes Mitglied
Hallo, Antwort auf deine Frage: M_snb Array soll die jeweiligen Spalten aus der Tabelle4 (ArbTab) z. B.
in die Tabelle Post übertragen. Es soll die ausgewählte Spalte von a. nach b. übertragen werden. Kopieren war vielleicht das falsche Wort. Gruß
 

Yaslaw

alter Rempler
Moderator
Also, dann soll eigentlich in der Sub M_snb Array() das ausgeführt werden, was scheinbar nicht funktioniert.
Dann wäre es doch schön, wenn du uns diese Sub zeigst.
 

josef24

Erfahrenes Mitglied
Danke, das du mal geschaut hast. Ja, genau. Nun auf deine Frage bezogen:
Ich bin der Ansicht gewesen das mit Zeile 38 beginnend der ausführende und abschließende Sub aktiviert würde. Gruß
 

Yaslaw

alter Rempler
Moderator
Visual Basic:
.UsedRange.ClearContents 'Alles löschen
.UsedRange 'Auf den Inhalt zugreifen
Komische Reihenfolge. Zuerst alles löschen und dann kopieren.
 

josef24

Erfahrenes Mitglied
Hallo habe den Code mal auf eine Tabelle verkürzt. Das löschen habe ich auskommentiert, hatte ich übersehen.


Visual Basic:
 Sub M_Tab_Teiln()
 
  M_snb Array(5, 4, 9, 12, 2, 15), "Tab_Teiln"
 
End Sub

Sub M_snb(sn, sh)

Dim j As Integer
    With sh
    
'  Set sh = Tabelle4
'  Set sh = Worksheets("ArbTab")
'  '  .UsedRange.ClearContents

        For j = 0 To UBound(sn)
        
          .UsedRange.Columns(sn(j)).Copy .Cells(1, j + 1)
          
     Next
    
  End With
 
End Sub
 

josef24

Erfahrenes Mitglied
Hab mal eine kleine Datei erstellt. Hab die Funktion "löschen" ausgeschaltet. Vielleicht kann man mal rein schauen. Die Daten werden nicht in die Tabelle2 übertragen. Bin also nicht zum Ziel gekommen.
 

Anhänge

  • Mappe1.zip
    21,1 KB · Aufrufe: 0
Zuletzt bearbeitet: