Thema Datum  Von Nutzer Rating
Antwort
26.01.2022 07:53:33 Max
NotSolved
26.01.2022 08:47:55 volti
NotSolved
26.01.2022 11:38:35 Max
NotSolved
26.01.2022 11:52:57 Gast39075
NotSolved
Rot Textbox-Eingaben nach Schließen des Makros behalten
26.01.2022 12:55:19 volti
NotSolved
26.01.2022 12:11:04 Gast17405
NotSolved

Ansicht des Beitrags:
Von:
volti
Datum:
26.01.2022 12:55:19
Views:
596
Rating: Antwort:
  Ja
Thema:
Textbox-Eingaben nach Schließen des Makros behalten

Hallo Max,

der Dateiaufbau so einer Datei sieht etwa so aus:

[Userform1]
Textbox1=4,321
Textbox2=99,6

[Userform2]
Textbox1=1.234
Textbox2=23,56

Das in den eckigen Klammern ist der Sektor. Man könnte hier jetzt also beliebig viele Userform1 mit zig Einträgen speichern.

Die Datei kann auch woanders als im Temp-Verzeichnis gespeichert werden und einen anderen Namen bekommen. Muss aber nicht.

 

Und ja, man kann auch alles in der Registry speichern. Mit den von Gast angeführten Befehlen werden Deine Daten in einem Bereich extra für VBA gespeichert.

Weiter unten siehst Du ein einfaches Beispiel dazu. Bei Massendaten kann man das auch geschickt in einer Schleife abarbeiten oder über Klassenprogrammierung oder sonst wie.

Bei meinen Speicherungen in der Registry ist der erste Parameter immer die Anwendung, also z.B. API_Viewer oder VBA2HTML usw.

Code:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
Private Declare PtrSafe Function GetPrivateProfileStringA Lib "kernel32" ( _
        ByVal lpApplicationName As StringByVal lpKeyName As AnyByVal lpDefault As String, _
        ByVal lpReturnedString As StringByVal nSize As LongByVal lpFileName As StringAs Long
Private Declare PtrSafe Function WritePrivateProfileStringA Lib "kernel32" ( _
        ByVal lpApplicationName As StringByVal lpKeyName As AnyByVal lpString As Any, _
        ByVal lpFileName As StringAs Long


Function SetGetInidaten(sBereich As String, sItem As StringOptional sDaten As StringAs String
' Schreibt Daten in die Textdatei oder liest Daten aus der Textdatei
  Dim sPfad As String, sTxt As String * 5000, l As Integer

  sPfad = Environ$("TEMP") & "\MeineUserforms.txt"
  Debug.Print Dir(sPfad)
  If sDaten <> "" Then
     WritePrivateProfileStringA sBereich, sItem, sDaten, sPfad
  Else
     l = GetPrivateProfileStringA(sBereich, sItem, "", sTxt, 5000, sPfad)
     SetGetInidaten = Left$(sTxt, l)
  End If
End Function

Sub Schreibewas1()
  SetGetInidaten "Userform1", "Textbox1", UserForm1.TextBox1.Value
  SetGetInidaten "Userform1", "Textbox2", UserForm1.TextBox2.Value
End Sub

Sub Lesewas1()
  UserForm1.TextBox1.Value = SetGetInidaten("Userform1", "Textbox1")
  UserForm1.TextBox2.Value = SetGetInidaten("Userform1", "Textbox2")
  UserForm1.Show
End Sub

' ###################### In der Registry speichern ###################################
Sub Schreibewas2()
  SaveSetting "MeineUserforms", "Userform1", "Textbox1", UserForm1.TextBox1.Value
  SaveSetting "MeineUserforms", "Userform1", "Textbox1", UserForm1.TextBox1.Value
End Sub

Sub Lesewas2()
  UserForm1.TextBox1.Value = GetSetting("MeineUserforms", "Userform1", "Textbox1", "")
  UserForm1.TextBox1.Value = GetSetting("MeineUserforms", "Userform1", "Textbox1", "")
End Sub
_________
viele Grüße
Karl-Heinz

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
26.01.2022 07:53:33 Max
NotSolved
26.01.2022 08:47:55 volti
NotSolved
26.01.2022 11:38:35 Max
NotSolved
26.01.2022 11:52:57 Gast39075
NotSolved
Rot Textbox-Eingaben nach Schließen des Makros behalten
26.01.2022 12:55:19 volti
NotSolved
26.01.2022 12:11:04 Gast17405
NotSolved