Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
144to148
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
144to148
144to148
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ClearContents aus Userform

ClearContents aus Userform
04.08.2002 11:24:58
Micha
wünsche schönen Sonntag

Ein kleines Problem!

Dieses Makro kann aus einem Kontextmenü heraus (dort klappt es tadellos) , oder über einen Button aus einer Userform gestartet werden. Nach Auswahl eines Eintages in einem Listenfeld.(Zeile)

In diesem Fall wird jedoch die Userform nach der Ausführung geschlossen.
WARUM?


Sub DatenLöschen()
Dim I As Long
I = rngWo.Row
If UserForm1.Visible = True Then I = Zeile
If MsgBox("Wollen Sie diesen Datensatz wirklich löschen" & vbLf & vbLf _
& rngWo & vbLf & "von " & Cells(I, 3) _
& " bis " & Cells(I, 4), vbYesNo, "Löschen?") = vbYes Then
Range("C" & I & ":D" & I & ",F" & I & ":J" & I & ",L" & I & ":M" & I).ClearContents
End If
End Sub

Kann man das vermeiden?

Vielen Dank
Micha

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

Betreff
Datum
Anwender
Anzeige
Re: ClearContents aus Userform
05.08.2002 06:04:18
Hans W. Herber
Hallo Michael,

der Code ist so nicht lauffähig. Wenn Du die Zeile von rngWo ausliest, muss es sich bei rngWo um ein Range-Objekt handeln. Wenn es sich um ein Range-Objekt handelt, kannst Du es in dieser Form nicht in den MsgBox-Text einbinden.

hans

Re: ClearContents aus Userform
05.08.2002 19:24:45
Micha
Hallo,

Dank für die Antwort.
Aber warum soll das nicht funktionieren?

Beim Klickereignis des Buttons in der Userform wird der Variablen "Zeile" die Zeilennummer des in einem Listenfeld selectierten Datensatzes übergeben.(Nummer der Ursprungszeile in der Tabelle aus der die Datensätze eingelesen werden(in einem Feld gespeichert))
Deswegen:
If UserForm1.Visible = True Then I = Zeile

I = rngWo ist für den Fall, daß der Code aus einem Kontextmenü heraus aufgerufen wird.
MeinControl.OnAction = "Löschen"
Sub Löschen()
Set rngWo = Selection
Call DatenLöschen
End Sub

Sowohl "Zeile" als auch "rngWo" sind im allgemeinen Teil des Moduls deklariert.

Der Code läuft auch. Sowohl aus dem Kontextmenü, wie auch aus der Userform. Der datensatz wird gelöscht, nur, daß Die Userform nach der Ausführung geschlossen wird.

Auch eine zum Test eingefügte(zw. "End If und "End Sub")
MsgBox("Hallo") wird ignoriert.

So, genug der Erklärungen.
Es würde mir wirklich helfen, wenn Du nochmal 5 Minuten investieren könntest.

Danke

Anzeige
Re: ClearContents aus Userform
05.08.2002 19:36:49
Hans W. Herber
... als was hast Du denn rngWo deklariert? Die Präfix sagt, als Range. Möglicherweise hast Du Dich aber nicht an die Regeln gehalten.

hans

Re: ClearContents aus Userform
05.08.2002 20:09:09
Micha
hallo,

wie es der Präfix sagt, als Range

IM allg Teil eines Moduls

Option Explicit
Public rngWo As Range 'geklickte Zelle
Dim WannDaten() 'Feld für Listbox
Dim Zeile As Long '
Dim Name As String 'gewählter Name

Re: ClearContents aus Userform
05.08.2002 20:15:43
Micha
Hallo,

leider muß ich jetzt Schluß machen.
Danke für deine Mühe.
Bin Morgen ab 9:00 wieder da.

Micha

Schicke auch gern den gesamten Code (etwas umfangreich)

Re: ClearContents aus Userform
06.08.2002 04:26:11
Hans W. Herber
... bitte nicht den gesamten Code, wer will sich da schon durcharbeiten. Die Deklaration von rngWo reicht.

hans

Anzeige
Re: ClearContents aus Userform
06.08.2002 09:33:16
Micha
Hallo, da bin ich wieder

Die Deklaration:

Option Explicit
Public rngWo As Range 'geklickte Zelle
Dim WannDaten() 'Feld für Listbox
Dim Zeile As Long '
Dim Name As String 'gewählter Name

Vielleicht noch ein paar Infos!

Der Code bricht ab, nachdem die Zeile ......ClearContents ausgeführt wurde.Alles was danach kommt wird ignoriert. Allerdings ohne Fehlermeldung.Und die Userform wird entladen.
Bricht der Nutzer den Code ab, indem er auf "Nein" in der MsgBox klickt bleibt die Userform sichtbar und auch funktionell.

Der Werdegang ist im Prinzip so:

Im Tabellenblatt wird durch Rechtsklick auf eine Zelle ein gesuchter Name ausgewählt.
Der Code listet alle Datensätze die dem Namen entsprechen in einer Listbox auf.
Die daten werden vorher in ein Feld eingelesen (WannDa()) Es enthält auch die Info über die Zeile.
Wenn der Nutzer dort einen Eintrag selektiert wird automatisch
der entsprechende Datensatz im Tabellenblatt markiert.
Im Klickereignis des Listenfeldes:

Private Sub ListBox1_Click()
Call ZeileZeigen(ListBox1.ListIndex)
End Sub

Sub ZeileZeigen(I As Long)
Zeile = WannDaten(5, I + 1)
UserForm1.Label7.Caption = "Die ausgewählten Daten" & vbLf & "befinden sich in" & vbLf & _
"Zeile " & Zeile
ActiveSheet.Cells(Zeile, 6).Select
UserForm1.Löschen.Enabled = True 'Löschbutton
End Sub

Private Sub Löschen_Click()
Call DatenLöschen
End Sub

Und da sind wir beim Problem

Guten Morgen!
Wenn ich Dich nerve, dann sag's

Micha

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige