Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1764to1768
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
Inhaltsverzeichnis

Anpassen eines VBA Skript aber wie?

Anpassen eines VBA Skript aber wie?
14.06.2020 09:54:59
Thomas
Guten Morgen,
ich versuche es nochmal mein Problem mit einem VBA Skript zu schildern: https://www.herber.de/bbs/user/138272.xlsm
Ich habe die Datei hochgeladen. Auf Tabelle1 sind nur die Daten abgelegt das muss man nicht beachten. Auf Tabelle2 ist ein Button wenn man den klickt sucht er etwas auf Tabelle1 und kopiert es und fügt es dann auf Tabelle2 ein. Dieser Vorgang kann man wiederholen bis eine bestimmt Anzahl Zeilen zum einfügen erreicht wurde und dann schiebt sich das ganze nach rechts und fängt dort weiter an einzufügen.
Wenn man dann auf Tabelle3 geht ist eine Tabelle mit verbunden Zellen. Es sollte das gleich passieren wie auf Tabelle2 nur das geht nicht. Wie kann man das Skript umprogrammieren das diese Funktion in dieser Art auch bei verbundenen Zellen klappt?
Für eine Hilfe bin ich sehr dankbar.
Es grüsst
Thomas

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anpassen eines VBA Skript aber wie?
14.06.2020 10:34:20
Regina
Hi Thomas,
der Code stammt glaube ich ursprünglich mal von mir. Verbundzellen sollte man meiden, das fällt einem immer wieder auf die Füße. In Deinem fall sehe ich die einzige Möglichkeit, die Werte vor dem Einfügen zu einem String zusammen zufassen:
Public Sub Uebert()
On Error GoTo fehler
Dim obj_wks_ziel As Worksheet
Dim obj_wks_quelle As Worksheet
Dim lng_letzte_zeile As Long
Dim lng_zeile As Long
Dim lng_spalte As Long
Dim rng_gefunden As Range
Dim lng_artikelnummer As Long
Dim str_werte As String
Set obj_wks_ziel = ActiveSheet  ' Hier Zieltabellenblatt benennen
Set obj_wks_quelle = Worksheets("Tabelle1")  ' Hier Quelltabellenblatt benennen
For lng_spalte = 1 To Columns.Count Step 3 ' 2To = Erste Spalte definieren zum einfügen, Step3 = _
wie viel Spalte definieren zum einfügen
lng_letzte_zeile = obj_wks_ziel.Cells(Rows.Count, lng_spalte).End(xlUp).Row + 1 ' Erste _
leere zeile im Zielblatt ermitteln
If lng_letzte_zeile  7 Then  ' bei 2 Spalten 5, bei 3 Spalten 13, bei 4 Spalten 17, bei 5 Spalten 21
MsgBox "Es wurden bereits 3 Spalten mit Artikelnummern gefüllt!"
Exit Sub
End If
If lng_letzte_zeile 
Gruß Regina
Anzeige
AW: Anpassen eines VBA Skript aber wie?
14.06.2020 11:31:05
Thomas
Guten Morgen Regina,
ja das wertvolle Skript stammt von dir. Hätte mich auch direkt bei dir gemeldet wenn es mir Möglich gewesen wäre. Aber schön hast du hier gelesen danke!
Ja ich dachte mit das es so etwas zu machen gibt, ich hätte das aber nicht hinbekommen da Kenntnis einfach zu lasch bei mir.
Ich werde das später mal austesten. Ganz herzlichen dank es sieht danach aus dass du mich gerettet hast!
Zu denen die argumentieren dass man Zellen nicht verbinden sollte, muss ich sagen ja das stimmt und versuche auch wo es nur geht die verbundenen Zellen zu vermeiden. Leider gibt es aber Situationen bei denen es einfach zu Aufwändig ist, etwas daran zu ändern. Und da muss einfach ein andere Lösung hin wie die von Regina! Denn die Tabelle die ich hier präsentiere sind einfach dargestellt. Dort wo es eingesetzt wird ist die Tabelle auch sehr komplex.
Anzeige
VerbundZellen können Pgmm komplizierter ...
14.06.2020 15:31:43
Luc:?
…machen, Thomas,
stellen insofern aber auch eine Herausforderung dar, zumal sie in bestimmter Form Tabellen übersichtlicher gestalten können ohne auf sinnvolles Filtern und einfache Fmln verzichten zu müssen. Ganz zu schweigen von gewissen anderen Vorteilen. Das ist hier aber wohl eher nicht der Fall, sondern allein der BlattStruktur geschuldet, sodass nur die Herausforderung bleibt. Im Prinzip könnte man diese auch wie folgt meistern:
1. Eine zusätzliche Long-LaufVariable deklarieren (hier ix),
2. Den PgmTeil nach If Not rng_gefunden Is Nothing Then nebst Folgezeile so ergänzen:
    If obj_wks_ziel.Cells(lng_letzte_zeile, lng_spalte).MergeCells Then
For ix = 1 To obj_wks_quelle.Range("A" & lng_zeile & ":C" & lng_zeile).Cells.Count
obj_wks_ziel.Cells(lng_letzte_zeile, lng_spalte).MergeArea(1) = _
obj_wks_quelle.Range("A" & lng_zeile & ":C" & lng_zeile).Cells(ix)
lng_spalte = lng_spalte + obj_wks_ziel.Cells(lng_letzte_zeile, _
lng_spalte).MergeArea.Cells.Count
Next ix
Else: obj_wks_quelle.Range("A" & lng_zeile & ":C" & lng_zeile).Copy _
obj_wks_ziel.Cells(lng_letzte_zeile, lng_spalte)
End If
Das sorgt aber nur dafür, dass die Werte des 1.Blattes an die richtige Stelle im 3.Blatt eingefügt wdn. Mit den weiterführenden Aufteilungsregeln und ggf zu übernehmenden ZellFormaten (was hier ohnehin komplizierter wäre) habe ich mich nicht befasst.
Gruß, Luc :-?
„Die universelle Befähigung zur Unfähigkeit macht jede menschliche Leistung zu einem unglaublichen Wunder.“ Stapps ironisches Paradoxon
Nichtsdestotrotz Durchblick verbessern mit …

Anzeige
AW: VerbundZellen können Pgmm komplizierter ...
14.06.2020 16:41:30
Thomas
Danke für deine Info. Leider kommt da nur, "bei verbundenen Zellen nicht möglich"
Bei Xl14/2010 fktioniert das so in deiner Datei, …
14.06.2020 17:29:19
Luc:?
…Thomas;
dann ist deine Xl-Version von µS wohl verschlimmbessert worden. AbwärtsKompatibilität scheint wohl keine Rolle mehr zu spielen.
Dann trage doch mal etwas manuell in eine VerbundZelle ein und lasse dabei den MakroRecorder laufen. Am Ergebnis kannst du dann evtlle Unterschiede, bezogen auf den Verbund (seine MergeArea), sehen.
Luc :-?
AW: Bei Xl14/2010 fktioniert das so in deiner Datei, …
14.06.2020 19:01:57
Thomas
Hallo Luc, danke für den Hinweis.
Ich habe das mal durchgeführt, aber ich sehe da mit meinem wissen nicht wirklich etwas.
Schau mal wie das aussieht..
Range("A11").Select
Selection.Copy
Range("A11").Select
Application.CutCopyMode = False
Selection.Copy
Range("E5:G5").Select
ActiveSheet.Paste
Range("A12").Select
Application.CutCopyMode = False
Selection.Copy
Range("H5:J5").Select
ActiveSheet.Paste
Range("A13").Select
Application.CutCopyMode = False
Selection.Copy
Range("K5:M5").Select
ActiveSheet.Paste
Range("J11").Select
Gruss
Thomas
Anzeige
AW: Bei Xl14/2010 fktioniert das so in deiner Datei, …
14.06.2020 20:06:54
Thomas
Luc im fall das du mich noch liest! herzlichen dank mal im voraus. Top! das Skript ist auferstanden! Habe noch ein paar Fehler gemacht. Habe die aber mit meiner mini Erfahrung noch gerade gefunden. In Trockenübung funzt es mal tadellos. Nächste Woche binde ich es dann mal dort ein wo es benötigt wird. Mal sehen ob es dort auch tut.
Bin aber mal sehr zufrieden Danke!!!
Biite sehr! Inzwischen ...
14.06.2020 23:37:10
Luc:?
…hatte ich vermutet, Thomas,
dass du versucht haben könntest QuellZelle auf ZielVerbund aufzukopieren. Und das geht wirklich nicht wg unterschiedl ZellenAnzahl.
Luc :-?
AW: VerbundZellen können Pgmm komplizierter ...
14.06.2020 19:44:13
Thomas
Komisch Luc, jetzt auf einmal regt sich etwas. und zwar mit deinem gepostetem Skript. Habe allerdings das Problem dass er die Werte nur in die erste Zeile schreibet. Die darauf folgenden Werte schreibt es dann auch nur in diese erste Zeile statt in die nächste leere Zeile.
Gruss
Thomas
Anzeige
Das hast du hoffentl inzwischen angepasst! owT
14.06.2020 23:38:55
Luc:?
:-?
Löse die verbundenen Zellen auf...
14.06.2020 10:36:41
Beverly
Hi Thomas,
...denn sie bereiten nur Ärger, wie du bereits festellen konntest - es gibt andere Möglichkeiten, eine Tabelle den Wünschen entsprechend zu formatieren.


AW: Löse die verbundenen Zellen auf...
14.06.2020 11:32:14
Thomas
Zu denen die argumentieren dass man Zellen nicht verbinden sollte, muss ich sagen ja das stimmt und versuche auch wo es nur geht die verbundenen Zellen zu vermeiden. Leider gibt es aber Situationen bei denen es einfach zu Aufwändig ist, etwas daran zu ändern. Und da muss einfach ein andere Lösung hin wie die von Regina! Denn die Tabelle die ich hier präsentiere sind einfach dargestellt. Dort wo es eingesetzt wird ist die Tabelle auch sehr komplex.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige