Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
316to320
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
316to320
316to320
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hide <-> Unload

Hide <-> Unload
04.10.2003 09:45:17
Franz W.
Hallo Forum,

bin gleich noch mal mit einer anderen Frage da:

Option Explicit

Public result As Boolean


Private Sub btnOK_Click()
result = True
Hide
End Sub



Private Sub btnAbbruch_Click()
result = False
Hide
End Sub


Klappt auch ganz gut. Wenn ich diese UF aber erneut aufrufe, stehen in den Textfeldern noch die Werte drin, die ich bei der vorherigen Benutzung eingetragen habe.

Selbstverständlich kann ich die Textfelder vor erneutem Aufruf einzeln leeren lassen (txtName = "" usw).Damit aber die Textfelder alle bei erneutem Aufruf automatischleer sind, habe ich jetzt mal "Hide" gegen "Unload" ausgetauscht. Jetzt kann ich aber beim Drücken des OK-Buttons die Werte nicht mehr abfragen, sie stehen nicht mehr zur Verfügung, weil die UF schon entladen ist.

Wie kann ich das bitte lösen, kann ich da einen Tipp bekommen?

Vielen Dank im Voraus

Grüße
Franz

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hide <-> Unload
04.10.2003 09:48:04
Ramses
Hallo Franz

wenn du die UF schliesst und das ERgebnis brauchst, definiere die Variable "Result" als "Public Result As Boolean" in einem Modul.
Dann steht sie dir auch zur Verfügung wenn die UF geschlossen ist.

Gruss Rainer
AW: Hide <-> Unload
04.10.2003 09:55:45
Franz W
Hallo Rainer,

vielen Dank für Deine Hilfe. Hab das " Public result As Boolean " jetzt in ein Standardmodul. Jetzt kommt aber "Fehler beim Kompilieren: Methode oder Datenobjekt nicht gefunden." bei:

.
.
.
If dlgKdAendern.result = False Then
Exit Sub
Else
.
.
.

... und unterlegt ist " .result "

Da muss ich jetzt wohl auch noch was ändern ?!? :-). Krieg ihc noch mal Deine Hilfe, bitte?

Grüße
Franz
Anzeige
AW: Hide <-> Unload
04.10.2003 09:57:10
Ramses
Hallo Franz,

die Variable ist Public !! d.h. öffentlich und steht überall zur Verfügung :-)

If Result = False Then

Das reicht.

Gruss Rainer
AW: Hide <-> Unload
04.10.2003 10:11:35
Franz W.
Hallo Rainer,

ich glaub, ich schreib als Level wieder "mäßig" ... ich verzweifel grad ein bissl:

Das mit der Variablen hab ich jetzt kapiert, dieser Unterschied zwischen den Modulen war mir noch nicht klar. Jetzt klappt aber mein bisheriger Code nicht mehr *seufz*: die obere Hälfte brauchst Du nicht anschauen.



Sub NeuenKundenEingeben()
KdBildPfad = Sheets("Help").[D26]
Smly = Worksheets("Help").[C18]
'Dateinamen von Bildern einlesen:
With Application.FileSearch
.LookIn = KdBildPfad
.Filename = "*.jpg"
.Execute
dlgKdAendern.cmbBilderNamen.Clear
For intCounter = 1 To .FoundFiles.Count
komplett = .FoundFiles(intCounter)
'In der folgenden Schleife wird der einzlesende und auszugebende Dateiname _
von hinten her Buchstabe für Buchstabe zusammengesetzt.
'Dies würde eigentlich bei i = 0 losgehen.
'Die "4", damit die Extension nicht mit angezeigt wird, _
weil die letzten 4 Zeichen abgezogen werden:
For i = 4 To Len(komplett)
'Sobald von hinten her ein "\" erreicht wird, is genug. _
Damit wird nur der Dateiname ausgegeben ohne Pfad:
If Mid(komplett, Len(komplett) - i, 1) = "\" Then Exit For
pctName = Mid(komplett, Len(komplett) - i, 1) & pctName
Next i
dlgKdAendern.cmbBilderNamen.AddItem pctName
pctName = ""
Next
End With
'Neue Kundennummer einlesen, restliche Felder leer machen:
With dlgKdAendern
.Caption = "Kunden eingeben"
.bezAenderKunde.Caption = "Kundendaten eingeben:"
.txtKdNr = Format(Worksheets("Help").Cells(2, 2) + 1, "000")
'        .txtTitel = ""
'        .txtNName = ""
'        .txtVName = ""
'        .txtco = ""
'        .txtStrasse = ""
'        .txtPLZ = ""
'        .txtOrt = ""
'        .txtObjekt = ""
'        .txtKtoNr = ""
'        .txtBLZ = ""
'        .txtBank = ""
'        .txtNotiz = ""
.Image1.Picture = LoadPicture(Smly)
Beep
'Dialog aufrufen:
dlgKdAendern.txtTitel.SetFocus
dlgKdAendern.Show
End With
Application.ScreenUpdating = False
If result = False Then
Exit Sub
Else
Worksheets("Help").Cells(2, 2) = Format(dlgKdAendern.txtKdNr, "0")
With Sheets("Daten")
.Unprotect
.Range("DatenTabelle").Select
iHilf = Selection.Row + Selection.Rows.Count - 1
.Rows(iHilf - 1).Select
Selection.Copy
Selection.Insert Shift:=xlDown
ActiveSheet.Paste
Application.CutCopyMode = False
.Cells(iHilf, 2) = Format(dlgKdAendern.txtKdNr, "0")
.Cells(iHilf, 3) = dlgKdAendern.txtTitel
.Cells(iHilf, 4) = dlgKdAendern.txtNName
.Cells(iHilf, 5) = dlgKdAendern.txtVName
.Cells(iHilf, 6) = dlgKdAendern.txtco
.Cells(iHilf, 7) = dlgKdAendern.txtStrasse
.Cells(iHilf, 8) = dlgKdAendern.txtPLZ
.Cells(iHilf, 9) = dlgKdAendern.txtOrt
.Cells(iHilf, 10) = dlgKdAendern.txtObjekt
.Cells(iHilf, 11) = dlgKdAendern.txtKtoNr
.Cells(iHilf, 12) = dlgKdAendern.txtBLZ
.Cells(iHilf, 13) = dlgKdAendern.txtBank
If dlgKdAendern.cmbBilderNamen = "" Then
Cells(iHilf, 59) = ""
Else
Cells(iHilf, 59) = dlgKdAendern.cmbBilderNamen
End If
dlgKdAendern.cmbBilderNamen.Clear
.Cells(iHilf, 60) = dlgKdAendern.txtNotiz
strAusgabe = ""
For intSpalte = 61 To 71
' Fehlerbehandlung, weil es einen Fehler gibt, wenn kein Kommentar eingetragen ist _
und in Cells(r, 72) "#WERT!" steht:
On Error Resume Next
If Cells(iHilf, intSpalte) <> "" Then
strAusgabe = strAusgabe & Cells(iHilf, intSpalte) & Chr(10)
End If
On Error GoTo 0
Next
'Den letzten Zeilenumbruch, nach dem kein Text mehr folgt, löschen:
If Right(strAusgabe, 1) = vbLf Then
strAusgabe = Left(strAusgabe, Len(strAusgabe) - 1)
End If
If dlgKdAendern.txtNotiz <> "" Then
Set cmt = Cells(iHilf, 4).AddComment _
(Text:=(Trim(dlgKdAendern.txtTitel & " " & dlgKdAendern.txtVName & " " & dlgKdAendern.txtNName & ":") _
& Chr(10) & strAusgabe))
With cmt.Shape
.TextFrame.AutoSize = True
With .TextFrame.Characters(1, InStr(1, cmt.Text, Chr(10)) - 1)
.Font.Bold = True
.Font.Underline = True
End With
End With
End If
Range("DatenTabelle").WrapText = False 'Kein Zeilenumbruch im Datenbereich
.Protect
End With
End If
Application.ScreenUpdating = True
Call Sortieren_nach_Namen
ActiveWorkbook.Save
End Sub


Was er noch macht, ist die neue Zeile einfügen. Aber Werte trägt er keine mehr ein. Ich kriege nur eine neue leere Zeile.

(Denselben Dialog mit ähnlichem Code - am Anfang werden vorhandene Daten eingelesen - nehme ich auch her, um Daten eines bereits existierenden Kunden zu ändern. Auch das klappt jetzt nicht mehr. Betätige ich nach Aufruf der UF den Ok-Button, löscht er sämtliche Inhalte der Zeile und lässt nur die leere ZEile stehen!)

Verzweifelte Grüße
Franz
Anzeige
Mit Hide statt Unload.Me klappt wieder alles
04.10.2003 10:18:22
Franz W.
Zusätzlich Infos nötig
04.10.2003 10:26:58
Ramses
Hallo Franz.

Das hat aber nichts mit der Variablenabfrage zu tun :-)
Wenn dein Makro noch eine Leerzeile einfügt, bedeutet das ja, dass die Variable richtig erkannt und verarbeitet wird.

Ich weiss jetzt nicht wo du die Variable "Result" vorher überall verwendest um eine Aktion auszuführen, aber werden die Felder in der UF überhaupt gefüllt, oder steht da was drin ?

Damit komme ich überhaupt nicht klar

With dlgKdAendern
Hier änderst du die Beschriftung und die Button Beschriftung
.Caption = "Kunden eingeben"
.bezAenderKunde.Caption = "Kundendaten eingeben:"
.txtKdNr = Format(Worksheets("Help").Cells(2, 2) + 1, "000")
' .txtTitel = ""
' .txtNName = ""
' .txtVName = ""
' .txtco = ""
' .txtStrasse = ""
' .txtPLZ = ""
' .txtOrt = ""
' .txtObjekt = ""
' .txtKtoNr = ""
' .txtBLZ = ""
' .txtBank = ""
' .txtNotiz = ""
.Image1.Picture = LoadPicture(Smly)
Beep
'Dialog aufrufen:
hier setzt du den Focus
dlgKdAendern.txtTitel.SetFocus
und hier rufst du den Dialog erst auf !!
Klappt das tatsächlich bei dir ?

dlgKdAendern.Show
End With

Gruss Rainer
Anzeige
Dann hat es sich ja erledigt :-)
04.10.2003 10:36:10
Ramses
Hallo Franz

ich habe vorausgesetzt du hast die UF entladen.
Damit ist deine erste Frage aber überflüssig nach der Variablen.
Dann kannst du die UF ja immer direkt abfragen ;-)

Gruss Rainer
AW: Hide <-> Unload
04.10.2003 09:48:48
Hajo_Zi
Hallo Franz

es gibt nur Sekt oder Selter entweder alle Werte behalten (Hide) oder alle löschen (unload) ein zwischending gibt es nicht.

Welcher Ok Button???


Falls Code vorhanden wurde dieser getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.

Microsoft MVP für Excel

Das Forum lebt auch von den Rückmeldungen.

http://home.media-n.de/ziplies/

Anzeige
Der Ok-Button der UF
04.10.2003 09:59:07
Franz W.
Hallo Hajo,

des geht um den Ok-Button einer UF. Der obige Code steht in dem Modulfenster zur Eingabe der Ereignisprozedur, das hinter der UF liegt.

Grüße
Franz

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige