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

Anpassung eines VB Scripts

Anpassung eines VB Scripts
15.10.2012 21:42:09
AcJoker
Hallo,
ein freundlicher User dieses Forums war so nett und hat mir folgenden Script geschrieben.
Sub newList()
Dim vntIn As Variant, vntOut() As Variant
Dim lngIndex As Long, LngC As Long, lngN As Long
With ActiveSheet
vntIn = .Range("A1:C" & .Cells(.Rows.Count, 1).End(xlUp).Row)
LngC = Application.Sum(.Columns(2))
Redim vntOut(1 To LngC, 1 To 2)
LngC = 1
For lngIndex = 1 To UBound(vntIn, 1)
If vntIn(lngIndex, 1)  "" And IsNumeric(vntIn(lngIndex, 2)) Then
For lngN = 1 To vntIn(lngIndex, 2)
vntOut(LngC, 1) = vntIn(lngIndex, 1) & "-" & lngN
vntOut(LngC, 2) = vntIn(lngIndex, 3)
LngC = LngC + 1
Next
End If
Next
.Range("E1").Resize(UBound(vntOut, 1), 2) = vntOut
End With
End Sub
Er erstellt mir aus diesen Daten
123 3 789
235 5 956
745 1 668
eine solche Tabelle
123-1 689
123-2 689
123-3 689
235-1 956
235-2 956
235-3 956
235-4 956
235-5 956
745-1 668
Spalte 1 ist eine fixe Zahl, Spalte 2 die Häufigkeit und Spalte 3 wieder eine fixe Zahl.
Nun würde ich das ganze gerne um eine Spalter erweitern. Diese Spalte enthält wiederrum eine fixe Zahl und soll bei der Ausgabe einfach nur der Häufigkeit nach in eine 3 Spalte geschrieben wiederen, genauso wie es jetzt schon mit Spalte 3 passiert.
Von VB habe ich leider recht wenig Ahnung.
Ich habe es nun mal so versucht aber es tut sich leider nichts.
Sub newList()
Dim vntIn As Variant, vntOut() As Variant
Dim lngIndex As Long, LngC As Long, lngN As Long
With ActiveSheet
vntIn = .Range("A1:D" & .Cells(.Rows.Count, 1).End(xlUp).Row)
Hier habe ich die Tabelle auf die spalte D ausgeweitet
LngC = Application.Sum(.Columns(2))
Redim vntOut(1 To LngC, 1 To 3)
Ich gehe davon aus das 1 To 2 bzw 3 den Ausgabebereich angebiet, in diesem Fall benötige ich  _
anstatt 2 Spalten nun 3 Spalten.
LngC = 1
For lngIndex = 1 To UBound(vntIn, 1)
If vntIn(lngIndex, 1)  "" And IsNumeric(vntIn(lngIndex, 2)) Then
For lngN = 1 To vntIn(lngIndex, 2)
vntOut(LngC, 1) = vntIn(lngIndex, 1) & "-" & lngN
vntOut(LngC, 2) = vntIn(lngIndex, 3)
vntOut(LngC, 3) = vntIn(lngIndex, 4)
Diese Zeile habe ich einfach kopiert. Steht LngC, X für die Spalte im Ausgabebereich? und Ind  _
lng,Index, Y für die Spalte aus der kopiert wird?
LngC = LngC + 1
Next
End If
Next
.Range("E1").Resize(UBound(vntOut, 1), 2) = vntOut
End With
End Sub
Wo liegt mein Fehler?
Ich muss zugeben das ich den genauen ablauf bzw. die Aussage der Befehle leider nicht kenne.
Gruß
Joker

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anpassung eines VB Scripts
15.10.2012 22:48:01
AcJoker
Hab den Fehler gefunden.
Es hätte
.Range("E1").Resize(UBound(vntOut, 1), 3) = vntOut
anstatt
.Range("E1").Resize(UBound(vntOut, 1), 2) = vntOut
sein müssen.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige