723 Aufrufe
Gefragt in Tabellenkalkulation von Mitglied (926 Punkte)
Hallo Helfer,
hier werden Spalten gesucht und markiert in denen es nur einen Eintrag gibt:
Sub Loeschen()
Dim leere_Spalte As Integer
Application.ScreenUpdating = False
For leere_Spalte = 256 To 1 Step -1
If Application.CountA(Columns(leere_Spalte)) = 1 Then
Columns(leere_Spalte).Select
hier fehlt was
Columns(leere_Spalte).Delete
End If
Next
End Sub
In dieses Makro möchte ich noch eine Rückfrage haben, wo bestätigt werden mus, das die Spalte glöscht werden soll.
Vielen Dank im Voraus
mfg
Wolfgang

2 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Wolfgang,

auf select kann in VBA verzichtet werden. in der Ortt.

Option Explicit

Sub Test()
If MsgBox("Wollen Sie den Auftrag wirklich löschen.", vbYesNo + vbQuestion, "Löschabfrage ?") = vbYes Then
MsgBox "Ja"
Else
MsgBox "Nein"
End If
End Sub


Gruß Hajo
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo Hajo,
entschuldige, das ich erst jetzt Zeit finde mich zu bedanken.

wo auch immer du "select" siehst, kannst du dir den deinen obigen Hinweis wohl nie verkneifen?
Überflüssig und falsch war die Anweisung "Application.ScreenUpdating = False", denn die verhinderte das dem Benutzer, die zu löschende Spalte per "Select" gezeigt wurde.
Ich hatte bei meiner Frage zu kompliziert gedacht, ich glaubte erst noch den Rückgabewert der MsgBox abfragen zu müssen. Ich habe die MsgBox noch um "Abbrechen" ergänzt und "Nein" zum vorgegebenen Wert geändert. Das Makro sieht nun so aus:
Sub leere_Spalte1()
Dim leere_Spalte As Integer
For leere_Spalte = 10 To 1 Step -1
If Application.CountA(Columns(leere_Spalte)) = 1 Then
Columns(leere_Spalte).Select
If MsgBox("Wollen Sie diese Spalte wirklich löschen?", vbYesNoCancel + vbDefaultButton2 + vbQuestion, "Löschabfrage") = vbYes Then
Columns(leere_Spalte).Delete
End If
ElseIf vbCancel Then GoTo ende???
End If
Next
ende???
End Sub
Was muss ich korrigieren damit nach klick auf "Abbrechen", das Makro beendet wird?
...