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

CommandButton deaktivieren.

CommandButton deaktivieren.
26.08.2006 12:49:32
Rene
Hallo!
Ich möchte CommandButton in Abhängigkeit von Einträgen in einer externen Datei aktieren oder deaktivieren. Das mache ich mit dieser Codezeile

Private Sub Userform_Initialize()
Dateiname = GetSpecialFolder(spMyDocuments) & "\TkAnbieter.ini"
On Error Resume Next
If GetINIString(Dateiname, "Anbieter", "A1N") = "" Then CommandButton1.Enabled = False
End Sub

Es ist aber unsinnig, für jeden CommandButton (20 Stück) eine Inf-Anweisung zu benutzen. Das geht doch sicher auch komfortabler? Es soll aber nur jeder zweite Eintrag in der externen Datei berücksichtigt werden. Danke für die Hilfe!
Gruß, Rene

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CommandButton deaktivieren.
26.08.2006 13:01:29
Peter
Hallo Rene,
versuch das folgende Makro, es ist zwar ungetestet, solle es aber tun:

Private Sub Userform_Initialize()
Dim iIndx  As Integer
Dateiname = GetSpecialFolder(spMyDocuments) & "\TkAnbieter.ini"
On Error Resume Next
For iIndx = 1 To 30 Step 2
If GetINIString(Dateiname, "Anbieter", "A1N") = "" Then
Controls("CommandButton" & iIndx).Enabled = False
End If
Next iIndx
End Sub

Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
AW: CommandButton deaktivieren.
26.08.2006 13:05:06
Peter
Hallo Rene,
so ist es ggf. etwas eleganter:

Private Sub Userform_Initialize()
Dim iIndx  As Integer
Dateiname = GetSpecialFolder(spMyDocuments) & "\TkAnbieter.ini"
On Error Resume Next
If GetINIString(Dateiname, "Anbieter", "A1N") = "" Then
For iIndx = 1 To 30 Step 2
Controls("CommandButton" & iIndx).Enabled = False
Next iIndx
End If
End Sub

Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
Anzeige
AW: CommandButton deaktivieren.
26.08.2006 13:32:26
Rene
Hallo!
Nein, funktioniert leider nicht. Nur wenn ich alle Angaben in der externen Datei lösche, wird beim Aufruf der Userform jeder zweite CommandButton deaktiviert. Das ist aber nicht das, was ich erreichen möchte. Ich möchte nur die Button deaktivieren, neben denen (im Label) keine Nummer steht. Ich habe schon versucht, über "Label.Caption" den Zustand der Labels abzufragen. Das funktioniert aber nicht, da die Labels im Urzustand leer sind.
Erst beim Aufrufen der Userform werden die Labels mit den Daten der externen Datei gefüllt. A1A, A2A,A3A (usw) steht für den Anbieter, A1N usw. für die zugehörige Nummer. Begonnen wird dabei bei Label3, endet bei Label42. Neben jedem Labelpaar, (es gehören immer zwei zusammen, Label3 und Label4, Label5 und Label6 usw.) ein CommandButton. Nur wenn das Label neben diesem leer ist, soll der Button deaktiviert werden.
Mit diesem Code (Ausschnitt) fülle ich die Labels:
Dateiname = GetSpecialFolder(spMyDocuments) & "\TkAnbieter.ini"
On Error Resume Next
AnBiVW.Label3.Caption = GetINIString(Dateiname, "Anbieter", "A1A")
AnBiVW.Label4.Caption = GetINIString(Dateiname, "Anbieter", "A1N")
AnBiVW.Label5.Caption = GetINIString(Dateiname, "Anbieter", "A2A")
AnBiVW.Label6.Caption = GetINIString(Dateiname, "Anbieter", "A2N")
AnBiVW.Label7.Caption = GetINIString(Dateiname, "Anbieter", "A3A")
AnBiVW.Label8.Caption = GetINIString(Dateiname, "Anbieter", "A3N")
Gruß, Rene
Anzeige
AW: CommandButton deaktivieren.
26.08.2006 14:35:38
Peter
Hallo Rene,
ich wollte eigentlich kein Testbeispiel bauen, habe es aber dann doch getan.
Starte einmal die beigefügte Mappe und rufe das UserForm auf.
https://www.herber.de/bbs/user/36177.xls
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
AW: CommandButton deaktivieren.
26.08.2006 14:37:09
fcs
Hallo Rene,
dann sollte es evtl. so funktionieren. Wahrscheinlich kannst du auch die Beschriftung der Labels in einer Schleife einlesen.

Private Sub Userform_Initialize()
Dateiname = GetSpecialFolder(spMyDocuments) & "\TkAnbieter.ini"
On Error Resume Next
For I = 1 To 20
If GetINIString(Dateiname, "Anbieter", "A" & I & "A") = "" Then 'Do nothing 'Diese Zeile ist evtl. nicht erforderlich
If GetINIString(Dateiname, "Anbieter", "A" & I & "N") = "" Then Me.Controls("CommandButton" & I).Enabled = False
Next I
End Sub
'Für die Labels:
Dateiname = GetSpecialFolder(spMyDocuments) & "\TkAnbieter.ini"
On Error Resume Next
For I = 1 To 20
ANBIVW.Controls("Label" & (I - 1) * 2 + 3).Caption = GetINIString(Dateiname, "Anbieter", "A" & I & "A")
ANBIVW.Controls("Label" & (I - 1) * 2 + 4).Caption = GetINIString(Dateiname, "Anbieter", "A" & I & "N")
Next I

Anzeige
AW: CommandButton deaktivieren.
26.08.2006 15:04:07
Rene
Danke Euch beiden. Der Code von Franz funktioniert perfekt. Der Code von Peter deaktiviert leider grundsätzlich (nur?) jeden zweiten Button, was aber nicht sein soll. Nochmals danke!
Gruß, Rene
AW: CommandButton deaktivieren.
26.08.2006 13:24:00
fcs
Hallo Rene,
wenn deine Controlbuttons von 1 bis 20 durchnummeriert sind, dann kannst du diese in einer For-Next-Schleife abarbeiten.
Da du aber nichts über die Function GetINIString verraten hast kann ich dir nicht sagen, wie/ob du die Parameter der Function auch in der Schleife festlegen kannst/muss.
Gruß
Franz

Private Sub Userform_Initialize()
Dateiname = GetSpecialFolder(spMyDocuments) & "\TkAnbieter.ini"
On Error Resume Next
For I = 1 To 20
If GetINIString(Dateiname, "Anbieter", "A1N") = "" Then Me.Controls("Commandbutton" & I).Enabled = False
Next
End Sub

Anzeige
AW: CommandButton deaktivieren.
26.08.2006 14:19:59
Rene
Hallo!
Funktioniert leider auch nicht. Damit ihr wisst, wovon ich überhaupt spreche, hier die entsprechenden Dateien. Die Datei "TkAnbieter.ini" muss zwingend im persönlichen Ordner "Eigene Dateien" gespeichert werden. Nur dann werden die Daten korrekt in die Userform eingelesen. Nach dem Öffnen der Arbeitsmappe wird eine Symbolleiste angelegt, in der ihr bitte auf das zweite Symbol klickt. Darauf öffnet sich besagte Userform.
Zum besseren Verständnis habe ich Anbieter 5 und 13 in der INI-Datei leer gelassen.
Wenn bei "Vorwahl" kein Einrag vorhanden ist, soll der nebenstehende Button deaktiviert werden. Das ist zwar für die Arbeit mit der Arbeitsmappe nicht unbedingt erforderlich, aber gefällt mir "kosmetisch" besser.
https://www.herber.de/bbs/user/36175.zip
Gruß, Rene
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige