Archiv
Ansicht:   
Suche   erweiterte Suche

Nachricht aus dem Archiv

effeff schrieb am 02.June.2010, 11:12:32 in der Kategorie pc.sw.office

Excel VBA Spalten löschen

> Hallo effeff,
> das wäre schön, wenn ich nur die ersten 20 Spalten bräuchte. Nein, die
> nicht benötigten Spalten liegen zwischen Spalten, mit denen ich
> weiterarbeiten muss.
> Ich dachte schon mal, mit
>

Dim BezSpalten(80) as String
> BezSpalten(0) = \"AZ LJA\"
> BezSpalten(1) = \"AZ JA\"
> BezSpalten(2) = \"AZ TR\"
> BezSpalten(3) = \"Ia Betrag\"
> BezSpalten(4) = \"Ib Betrag\"
> usw. usw.

und dann
>

For i = 1 To intSpalten
> If Cells(1, i).Value = BezSpalten() Then
> Columns(i).Delete
> End If
> Next

die Geschichte zu vereinfachen. Gleichwohl habe ich immer noch
> eine ellenlange Liste der Variablen, wenn das überhaupt mit BezSpalten()
> funktioniert.
> Habe dann auch schon darüber nachgedacht, ob man nicht die Variable
> BezSpalten wie folgt definiert:
>

BezSpalten = \"Az LJA\" Or \"AZ JA\" Or \"AZ TR\"

(usw. usw.)
> Aber das funktioniert auch nicht.
> Hast Du vielleicht noch eine andere Idee, wie ich den Code kürzen könnte?
> Im voraus vielen lieben Dank
> Toni

Wie bereits im ersten Posting geschrieben (im Code), müssen die Spalten von hinten nach vorne gelöscht werden, da du dir sonst den Ast absägst, auf dem du sitzt.

Also nicht

For i=1 To intSpalten



sondern

For i=intSpalten to 1 Step -1



Dann würde ich einfach einen Suchstring basteln und mit einem Gesamtstring vergleichen.


Dim Gesamtstring As String
Dim Suchstring As String
Dim intSpalten As Integer

Gesamtstring=\"Az LJA;AZ JA;AZ TR;Ia Betrag;Ib Betrag;usw.\"

intSpalten = Cells(1, Columns.Count).End(xlToLeft).Column

For i=intSpalten to 1 Step -1
Suchstring=Cells(1, i).Value
If InStr(1, Gesamtstring, Suchstring) <> 0 Then
Columns(i).Delete
End If
Next

MsgBox(\"Wir sind fertig!\")

Archiv
Ansicht:   
Suche   erweiterte Suche
Auf unserer Web-Seite werden Cookies eingesetzt, um diverse Funktionalitäten zu gewährleisten. Hier erfährst du alles zum Datenschutz