Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1476to1480
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

Code zu lang, deshalb nicht funktionsfähig?

Code zu lang, deshalb nicht funktionsfähig?
29.02.2016 23:39:54
Christoph
Hallo zusammen.
Kann mir wer helfen? Ich hatte bei folgendem Thread (Nr. 1472420 2016-02-01 12:00:15 Makro: Nach Überschr. suchen und in neues AB) schon großartige Unterstützung.
Der code wird zum Suchen und in mit definierter Reihenfolge in ein neues Arbeitsblatt kopieren genutzt.
Option Explicit
Sub Suchen()
Dim WS As Worksheet
Dim C, FFind(), NNeu(), FWo(), i As Integer
FFind = Array(“ped352“,“ped387“,“p1000_sw_4“,“P1000_sw_7“)
NNeu = Array("DB 132 A“, "DB 132 B", "DB 10 A“,“DB 10 B“) 'Umbenennung fü FFind
FWo = Array(2, 5, 9, 3)'Zielspalten zu FFind
For Each WS In Worksheets
If WS.Name  "Z" Then
For i = 0 To UBound(FFind)
Set C = WS.Rows("1:1").Find(FFind(i), LookIn:=xlValues)
If Not C Is Nothing Then
WS.Columns(C.Column).Copy Sheets("Z").Columns(FWo(i))
Sheets("Z").Cells(1, FWo(i)) = NNeu(i)
End If
Next i
End If
Next
End Sub
Dies ist jedoch nur eine Auswahl. In der Realität habe ich 350 Zahlen bzw. Beschriftungen (und damit Spalten im Array). Wenn ich diese nun in Excel kopiere ist es zu lang und der ganze Text wird rot.
Es gibt sicher die Möglichkeit, Excel über etwas zu sagen, dass es in der nächsten Zeile weitergeht. Nur wie?
Und perfekt wäre es, wenn ich dies nicht händisch eintippen muss... weil sich die Länge je nach inhalt bei FFind und bei NNeu immer ändert :(
Kann mir wer helfen? Vielen Dank für eure Unterstützung.
Viele Grüße
Chrisotph

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code zu lang, deshalb nicht funktionsfähig?
01.03.2016 00:20:03
Daniel
Hi
wenn eine Programmzeile zu lang für den Editor wird (oder für deinen Bildschirm)
kannst du nach Leerzeichen + Unterstrich in die nächste Zeile gehen.
dh wenn du
FFind = Array(“ped352“,“ped387“,“p1000_sw_4“,“P1000_sw_7“)

in mehrere Zeilen schreiben willst, dann:
FFind = Array(“ped352“,“ped387“, _
“p1000_sw_4“,“P1000_sw_7“)
aber auch hierbei sind keine unbegrenzt langen Zeilen möglich.
bei Arrays könnte man jedes Element in einer eigen Zeile zuweisen, das gibt dann aber viel Schreibarbeit:
dim FFind(3)
FFind(0) = "ped352"
FFind(1) = "ped387"
FFind(2) = "p1000_sw_4"
FFind(3) = "p1000_sw_7"
die dritte möglichkeit wäre, dass du die Werte in eine Exceltabelle untereinander schreibst.
dh für dein Beispiel kommen die Werte in die Zellen A1-A4 auf dem Blatt Tabelle1:
A1: ped352
A2: ped387
A3: P1000_sw_4
A4: P1000_sw_7
dim Code weist du dann die Variable so zu:
FFind = Sheets("Tabelle1").Range("A1:A4").Value

dann stehen die Werte im Array FFind.
dieses Array ist dann aber ein zweidimensionales Array zur Basis 1 (dh der erste Index ist 1 und nicht 0)
du müsstest dein Array dann so verwenden:
For i = 1 To UBound(FFind, 1)
Set C = WS.Rows("1:1").Find(FFind(i, 1), LookIn:=xlValues)
das Wäre eigentlich die beste Lösung, weil du dann die Werte für die Arrays in eine Exceltabelle schreiben kannst und so auch besser den Überblick hast, ob einzelnen Werte für deine verschiedenen Arrays auch richtg zugeordnet sind (müssen in der gleichen Zeile stehen)
Gruß Daniel

Anzeige
AW: Code zu lang, deshalb nicht funktionsfähig?
01.03.2016 15:14:05
Christoph
Hallo Daniel.
Vielen Dank dafür. Das klingt auf jeden Fall mal nach was, was ich weiter ausprobieren werde. Vermutlich über die "lange schreibarbeit" FFind(0) und dim FFind.
Da ich das eh alles als Excel Tabelle habe ist es nur noch etwas Verketten Arbeit und suchen und ersetzen.
Ich melde mich bei dir ob es geklappt hat. Vielen Dank nochmal erneut.
Viele Grüße
Christoph

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige