PDA

Vollständige Version anzeigen : Commandbutton bzw. Umschaltfeld


Alcyone
13.03.2009, 12:57
Habe die Ehre :p

ich brauch wieder eure hilfe, ich sitz hier vor ner riesen excel tabelle und soll in diese den autofilter per commandbutton einrichten

in der Spalte G15:G543 sind die werte die ich filtern soll... und zwar so:

G1:G543>0 soll gefiltert werden

könnt ihr mir da helfen?

Danke schon mal im voraus ;)

Backowe
13.03.2009, 13:09
Hi,

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Private Sub</span> CommandButton1_Click()
<span class="TOKEN">If</span> FilterMode <span class="TOKEN">Then</span>
ShowAllData
<span class="TOKEN">Else</span>
Range(&quot;$G$1:$G$543&quot;).AutoFilter Field:=1, Criteria1:=&quot;&gt;0&quot;, Operator:=xlAnd
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Alcyone
13.03.2009, 13:21
vielen vielen Dank für die schnell antwort :)

jedoch hab ich ein problem :> wie fügt man den command button ein?

ich dacht steuer toolbox oder so - commandbutton - rechtsklick und code - dann neues modul - code eingeben - fertig

aber irgendwie funktioniert das dann nicht :(

Backowe
13.03.2009, 13:35
Hi,

mit der rechten Maustaste neben die Symbolleisten klicken, dann Steuerelemente-Toolbox anklicken, das 6. Symbol ist der Command-Button, daraufklicken und im Tabellenblatt aufziehen. Doppelklick auf den Command-Button, dann öffnet sich der VBA-Editor und im rechten Fenster den Code einfügen. VBA-Editor schließen und auf das erste Symbol in der Steuerelemente-Toolbox klicken, damit wird der Entwurfsmodus beendet. Dann sollte der Command-Button scharfgeschaltet sein.

Bei Fragen fragen.

Alcyone
13.03.2009, 13:56
nochmals danke :D

aber es geht weiter ^^

ich muss das dokument schützen, dann muss ich den autofilter debuggen oder so :>

kannst du mir da bitte noch helfen?

Backowe
13.03.2009, 14:08
Hi,

Entwurfsmodus einschalten, Doppelklick auf den Command-Button, in den Eigenschaften auf der linken Seite im VBA-Editor, Locked auf False setzen , dann funktioniert der Button auch bei geschützten Tabellenblatt.

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Private Sub</span> CommandButton1_Click()
ActiveSheet.Unprotect &quot;geheim&quot;
<span class="TOKEN">If</span> FilterMode <span class="TOKEN">Then</span>
ShowAllData
<span class="TOKEN">Else</span>
Range(&quot;$G$1:$G$543&quot;).AutoFilter Field:=1, Criteria1:=&quot;&gt;0&quot;, Operator:=xlAnd
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
ActiveSheet.Protect &quot;geheim&quot;
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Alcyone
13.03.2009, 14:14
geht leider noch nicht

ActiveSheet.Unprotect "geheim"

damit hat er ein problem - wird im code gelb markiert

Backowe
13.03.2009, 14:22
Hi,

dann schreibe statt "geheim" dein eigenes Passwort hin! "geheim" war nur eine Vorgabe! ;o)

Alcyone
13.03.2009, 14:40
Hi,

das ding ist jetzt, jedes mal wenn man den button klickt, wird auch das dokument geschützt (während es geschützt ist), dass verursacht den effekt, dass man danach debuggen muss um wieder etwas machen zu können

nebenbei würd ich gern wissen woher man die ganzen befehle bekommt, dass ich auch mal selber probieren kann :D

Sub Auslesen()
Dim RaZelle As Range
Dim StSichtbar_range As String ' Sichtbarer Bereich Fixierung unten rechts
Dim LoLetzte As Long ' Letzte Zeile Bildschirm
Dim StLinks As String ' linke Begrenzung Bildschirm bei Fixierung
Dim StRechts As String ' rechte Begrenzung Bildschirm
'******************************
' Idee von Beverly Ms Office Forum
If UCase(Left(ActiveSheet.Name, 2)) = "ET" Then
ByFarbe = 33
ElseIf UCase(Left(ActiveSheet.Name, 3)) = "KTS" Then
ByFarbe = 15
End If
'******************************
StName = ActiveSheet.CodeName ' CodeName der Tabelle
InI = 0
For InI = 1 To 256
With Cells(ActiveCell.Row, InI)
StWert(InI - 1) = .Address
If .Interior.ColorIndex = xlNone Then .Interior.ColorIndex = ByFarbe
End With
Next InI
End Sub


das gelbe scheint nun der fehler zu sein :(

Backowe
13.03.2009, 15:05
Hi,

dann laß doch einfach die Zeile mit Protect weg, dann wird die Tabelle nicht geschützt.

Also ich habe mehr oder weniger mit dem Makrorecorder Makros aufgezeichnet, irgendwann ist mir dann bewußt geworden, daß der Recorder sehr viel Müll produziert und habe dann den aufgezeichneten Code begonnen zu modifizieren.

Lies Dich mal hier den Beitrag durch, der ist sehr zu empfehlen! http://www.online-excel.de/excel/singsel_vba.php?f=61 :)

Backowe
13.03.2009, 15:34
Hi,

also bei mir funktioniert der Code problemlos.

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Option</span> <span class="TOKEN">Explicit</span>
&nbsp;
<span class="TOKEN">Sub</span> Auslesen()
<span class="TOKEN">Dim</span> RaZelle <span class="TOKEN">As</span> Range
<span class="TOKEN">Dim</span> StSichtbar_range <span class="TOKEN">As</span> <span class="TOKEN">String</span> <span class="REM">' Sichtbarer Bereich Fixierung unten rechts</span>
<span class="TOKEN">Dim</span> LoLetzte <span class="TOKEN">As</span> <span class="TOKEN">Long</span> <span class="REM">' Letzte Zeile Bildschirm</span>
<span class="TOKEN">Dim</span> StLinks <span class="TOKEN">As</span> <span class="TOKEN">String</span> <span class="REM">' linke Begrenzung Bildschirm bei Fixierung</span>
<span class="TOKEN">Dim</span> StRechts <span class="TOKEN">As</span> <span class="TOKEN">String</span> <span class="REM">' rechte Begrenzung Bildschirm</span>
<span class="TOKEN">Dim</span> StName <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Dim</span> StWert(256) <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Dim</span> InI <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>
<span class="TOKEN">Dim</span> ByFarbe <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>
<span class="REM">'******************************</span>
<span class="REM">' Idee von Beverly Ms Office Forum</span>
<span class="TOKEN">If</span> UCase(Left(ActiveSheet.Name, 2)) = &quot;ET&quot; <span class="TOKEN">Then</span>
ByFarbe = 33
<span class="TOKEN">ElseIf</span> UCase(Left(ActiveSheet.Name, 3)) = &quot;KTS&quot; <span class="TOKEN">Then</span>
ByFarbe = 15
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
<span class="REM">'******************************</span>
StName = ActiveSheet.CodeName <span class="REM">' CodeName der Tabelle</span>
InI = 0
<span class="TOKEN">For</span> InI = 1 <span class="TOKEN">To</span> 256
<span class="TOKEN">With</span> Cells(ActiveCell.Row, InI)
StWert(InI - 1) = .Address
<span class="TOKEN">If</span> .Interior.ColorIndex = xlNone <span class="TOKEN">Then</span> .Interior.ColorIndex = ByFarbe
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
<span class="TOKEN">Next</span> InI
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Alcyone
16.03.2009, 09:04
so Hallo :)

war euer WE schön :D?

hab den fehler jetzt gefunden denke ich, und zwar:

das Blatt wird geschützt - "Zellen dürfen formatiert werden" wird freigegeben wegen der Farbmarkierung, dann wird die tabelle wieder geschützt durch den protect befehl, jedoch ohne "Zellen dürfen formatiert werden"

somit muss man es debuggen, haste dafür auch nen befehl :>?

Backowe
16.03.2009, 09:17
Hi,

ich gebe Dir mal einen heißen Insidertipp, wenn man den Code nicht kennt, einfach mal den Makrorekorder anwerfen. Danach den Code von aufgezeichnetem Müll befreien und schon ist das Problem gelöst.

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre>ActiveSheet.Protect DrawingObjects:=True, Contents:=True, AllowFormattingCells:=True</pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Was auch ein guter Tipp ist, einfach mal die Hilfe für Protect benutzen.

Alcyone
16.03.2009, 09:48
Das Makros aufzeichnen ist ja richtig genial :D

Danke für den Tip :P


nur jetzt hab ich das problem das er mir den Schutz rausnimmt, dann wieder schützt... aber ohne passwort, und bei makros aufzeichnen steht auch nix von meinem passwort

muss ich da iwie mit SET password "..." oder sowas? :S?

Backowe
16.03.2009, 09:59
Hi,

probiere mal: Activesheet.Protect "geheim" :)

Alcyone
16.03.2009, 10:15
Hi,

guck ich hab den code hier

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, AllowFormattingCells:=True

hab mir ein Makro aufgezeichnet, wo ich das blatt geschützt habe mit den obigen befehlen, nur wird mir dann kein password im code aufgezeichnet.

d.h. man kann den schutz nach benutzung des makros ohne passwort entfernen.

Backowe
16.03.2009, 11:27
Hi,

bei dem aufgezeichneten Code wird kein Passwort gesetzt, der Schutz kann somit ohne PW entfernt werden.

Alcyone
16.03.2009, 11:59
ja, sag ich doch ^^

aber das lässt sich doch sicher auch mit passwort programmieren

die 2 varianten funktionieren nicht:

ActiveSheet.Protect "passwort" DrawingObjects:=True, Contents:=True, AllowFormattingCells:=True

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, AllowFormattingCells:=True "passwort"

Backowe
16.03.2009, 12:26
Hi,

probiere mal:

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, AllowFormattingCells:=True, Password:="geheim"

Alcyone
16.03.2009, 14:21
hi,

so funktionierts, danke :D

aber next step :> die makros sind nicht vertrauenswürdig, sobald ich das verschicke und die Makroeinstufung (Extra-Makros-Sicherheit) nicht auf das geringste gestellt sind geht leider garnix ;(

weder aktionsbutton noch die farbliche makrierung

Backowe
16.03.2009, 14:40
Hi,

kennst Du selfcert (Stichwort Selbstzertifizierung), such mal hier im Forum oder mit der Suchmaschine Deiner Wahl.