Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1024to1028
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

Benutzer Abfrage

Benutzer Abfrage
13.11.2008 09:47:25
konti83
Guten Tag zusammen,
ich hätte eine kurze Frage. Prinzipiell geht es darum, in einem Excel-Tabellenblatt eine bestimmte Spalte zu löschen. Man soll also auf einen Knopf drücken (Command Button) dann soll der Benutzer aufgefordert werden eine Zelle in der zu löschenden Spalte anzuklicken und dann löscht das Progrämmchen austomatisch diese Spalte. Ich bekomm alles hin, bis auf die Benutzer-Abfrage.
Vielen Dank schoneinmal für die Unterstützung.
Viele Grüße
Christian

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Benutzer Abfrage
13.11.2008 10:04:47
Beate
Hallo Christian,
siehe Beispieldatei: https://www.herber.de/bbs/user/56732.xls
Das Makro liegt im Codefenster der Tabelle:
Private Sub CommandButton1_Click()
    Dim oRangeSelected As Range
    On Error Resume Next
    Set oRangeSelected = Application.InputBox("Markieren Sie eine Zelle in der zu löschenden Spalte!", _
        "SelectARAnge Demo", Selection.Address, , , , , 8)
    If oRangeSelected Is Nothing Then
        MsgBox "Haben Sie die Auswahl abgebrochen?"
    Else
        oRangeSelected.EntireColumn.Delete
    End If
End Sub


Gruß,
Beate
Anzeige
AW: Benutzer Abfrage
13.11.2008 10:16:00
konti83
Super! Tausen Dank.
Es funktioniert. Eine kleine Zusatzfrage hätte ich allerdings doch noch. Ich möchte sicherstellen dass mindestens 3 Spalten in meiner Arbeitsmappe verbleiben. Solch eine Abfrage müsste also auch noch vor dem endgültigen Löschen der Spalte geschehen.
Danke nochmals und Viele Grüße!
Christian
Min 3 Spalten erhalten - Alternative
13.11.2008 12:11:33
Beate
Hallo Christian,
Private Sub CommandButton1_Click()
    Dim oRangeSelected As Range
    ActiveSheet.UsedRange
    On Error Resume Next
    Set oRangeSelected = Application.InputBox("Markieren Sie eine Zelle in der zu löschenden Spalte!", _
        "SelectARAnge Demo", Selection.Address, , , , , 8)
    If oRangeSelected Is Nothing Then
        MsgBox "Haben Sie die Auswahl abgebrochen?"
        Exit Sub
    End If
    If UsedRange.Columns.Count - oRangeSelected.Columns.Count <= 3 Then
        MsgBox "Abbruch - Zu viele Löschspalten"
        Exit Sub
    End If
    oRangeSelected.EntireColumn.Delete
End Sub


Gruß,
Beate
Anzeige
AW: Benutzer Abfrage
13.11.2008 10:22:39
fcs
Hallo Christian,
Excel hat eine speziele Input-Box, die auch eine Zellauswahl ermöglicht.
Gruß
Franz

Sub SpalteLoeschen()
Dim wks As Worksheet, varEingabe As Range
On Error GoTo Fehler
Set varEingabe = Application.InputBox(Prompt:="Bitte Zelle in zu löschender Spalte wählen", _
Title:="Spalte Löschen", Default:=ActiveCell.Address, Type:=8)
With varEingabe
If MsgBox(Prompt:="Spalte " & .Column _
& " (" & Mid(.Address, 2, InStr(2, .Address, "$") - 2) & ") wirklich löschen?", _
Buttons:=vbQuestion + vbOKCancel, Title:="Spalte Löschen") = vbOK Then
ActiveSheet.Columns(varEingabe.Column).Delete
Else
'do nothing
End If
End With
Fehler:
'Abbruch der Eingabe bei Zellenauswahl führt zu Fehler
If Err.Number  0 Then
If Not varEingabe Is Nothing Then
MsgBox "Fehler-Nr.: " & Err.Number & vbLf & Err.Description
End If
End If
End Sub


Anzeige
AW: Benutzer Abfrage
13.11.2008 10:38:26
konti83
Super! Das sieht ja noch besser aus wie das von Beate
Trotzdem nochmals die kleine Zusatzfrage:
Ich möchte sicherstellen dass mindestens 3 Spalten in meiner Arbeitsmappe verbleiben. Solch eine Abfrage müsste also auch noch vor dem endgültigen Löschen der Spalte geschehen.
Danke nochmals und Viele Grüße!
Christian
AW: Benutzer Abfrage
13.11.2008 11:31:28
fcs
Hallo Christian,
die Zahl der Spalten kann man z.B. mit einer der beiden nachfolgenden Methoden prüfen
Entweder die letzte Spalte mit Daten oder die Anzahl Spalten mit Daten.
Gruß
Franz

Sub SpalteLoeschen()
Dim wks As Worksheet, varEingabe As Range
On Error GoTo Fehler
'  If fncSpalten_mit_Daten(wks:=ActiveSheet) > 3 Then
If fncLetzteSpalte(wks:=ActiveSheet) > 3 Then
Set varEingabe = Application.InputBox( _
Prompt:="Bitte Zelle in zu löschender Spalte wählen", _
Title:="Spalte Löschen", Default:=ActiveCell.Address, Type:=8)
With varEingabe
If MsgBox(Prompt:="Spalte " & .Column _
& " (" & Mid(.Address, 2, InStr(2, .Address, "$") - 2) _
& ") wirklich löschen?", _
Buttons:=vbQuestion + vbOKCancel, Title:="Spalte Löschen") = vbOK Then
ActiveSheet.Columns(varEingabe.Column).Delete
Else
'do nothing
End If
End With
Else
MsgBox "Es sind nur noch 3 Spalten mit Daten vorhanden!"
End If
Fehler:
'Abbruch der Eingabe bei Zellenauswahl führt zu Fehler
If Err.Number  0 Then
If Not varEingabe Is Nothing Then
MsgBox "Fehler-Nr.: " & Err.Number & vbLf & Err.Description
End If
End If
End Sub
Function fncSpalten_mit_Daten(wks As Worksheet) As Long
'Ermittelt die Anzahl Spalten mit Daten
Dim Spalte As Long
With wks
For Spalte = 1 To .Cells.SpecialCells(xlCellTypeLastCell).Column
If Not (IsEmpty(.Cells(1, Spalte)) _
And .Cells(.Rows.Count, Spalte).End(xlUp).Row = 1) Then
fncSpalten_mit_Daten = fncSpalten_mit_Daten + 1
End If
Next
End With
End Function
Function fncLetzteSpalte(wks As Worksheet) As Long
'Ermittelt die Letzte Spalte mit Daten
Dim Spalte As Long
With wks
For Spalte = .Cells.SpecialCells(xlCellTypeLastCell).Column To 1 Step -1
If Not (IsEmpty(.Cells(1, Spalte)) _
And .Cells(.Rows.Count, Spalte).End(xlUp).Row = 1) Then
fncLetzteSpalte = Spalte
Exit For
End If
Next
End With
End Function


Anzeige
AW: Benutzer Abfrage
13.11.2008 16:39:42
konti83
Nochmals Danke.. Funktioniert super!!
Viele Grüße

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige