Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Automatisches Anlegen eines Toggle-Buttons

Mitglied: goodbytes

goodbytes (Level 2) - Jetzt verbinden

07.08.2011 um 12:46 Uhr, 4240 Aufrufe, 5 Kommentare

Hallo,
ich stehe gerade vor einem kleinen Problem.

In meiner Excel-Datei werden soviele Spalten mit einem Rahmen formatiert, wie es angegeben wird Zeilen von-bis), um Pflichteingaben kennzuzeichnen.

01.
Option Explicit 
02.
Const StartZeile = 7 
03.
 
04.
Sub Datenübernahme() 
05.
 
06.
    Dim Cell As Range 
07.
    Dim a As Integer 
08.
    Dim b As Integer 
09.
    Dim c As String 
10.
    Dim d As String 
11.
    Dim e As Integer 
12.
     
13.
    a = Range("I1").Value 
14.
    b = Range("J1").Value 
15.
    c = Range("H3").Value 
16.
    d = Range("I3").Value 
17.
    e = Range("J3").Value 
18.
     
19.
    If a < 7 Then 
20.
        a = 7 
21.
    End If 
22.
     
23.
' Pflichtfelder zum Einträgen formatieren 
24.
 
25.
    Range("H7:K20").Select 
26.
     
27.
            With Selection.Borders 
28.
                .LineStyle = xlNone 
29.
            End With 
30.
             
31.
            With Selection.Interior 
32.
                .ColorIndex = xlNone 
33.
            End With 
34.
     
35.
    Range(("H" & a) & ":" & ("K" & b)).Select 
36.
     
37.
    For Each Cell In Selection 
38.
 
39.
        If Cell.Row >= StartZeile Then 
40.
             
41.
            With Selection.Borders 
42.
                .LineStyle = xlContinuous 
43.
            End With 
44.
             
45.
            With Selection.Interior 
46.
                .ColorIndex = 27 
47.
            End With 
48.
 
49.
        End If 
50.
    Next 
51.
... 
52.
 
Bei diesen Feldern wird normalerweise manuell ein Zahlenwert eingegeben.
Allerdings könnte auch mal ein klar definierter Text drin stehen ("negativ" bzw. "positiv")

Damit der User, wenn er keinen Wert, sondern nur "negativ" oder "positiv" eintragen nöchte will ich iHm etwas Tipparbeit ersparen.

Dazu möchte ich gerne einen Toggle-Button zur Auswahl dieser zwei Wete anzeigen. In meinem Fall müssten also dieToggon-Button in jeder Zelle des definierten Bereiches erzeugt werden und damit zur Auswahl zur Verfügung stehen. Der ausgewählte Text soll dann in der Zelle erscheinenund eventuell ein weiteres Makro gestartet werden.

Wie könnte ich das hinbekommen?

Ach so, eines wundert mich auch noch sehr. den Zeilenbereich kann man ja hier frei eingeben. Die Zellformatierung soll aber definitiv erst ab der Zeile 7 anfangen, selbst wenn der Startwert kleiner als 7 ist.

Angedacht hatte ich es so:

Ich hatte es probiert mit:

01.
    Range(("H" & a) & ":" & ("K" & b)).Select 
02.
     
03.
    For Each Cell In Selection 
04.
 
05.
<code> 
06.
    Range(("H" & a) & ":" & ("K" & b)).Select 
07.
     
08.
    For Each Cell In Selection 
09.
 
10.
        If Cell.Row >= StartZeile Then
Leider macht mein Excel 2007 aber das aber nicht mit, sondern ignorirt es einfach.an dieser Stelle

01.
       ...  If Cell.Row >= StartZeile Then ...
Nun hab ich mittels folgender Krücke die Eingabe abgeprüft und im Falle "<7" einfach den Wer der Variable mit 7 überschrieben um auf mindestens 7 zu erhöhen.

01.
    If a < 7 Then 
02.
        a = 7 
03.
    End If
Nicht gerade besonders elegant...

Vielleicht hat da auch jemand eine Idee?

Vielen Dank im voraus !!!

Torsten
Mitglied: rubberman
07.08.2011 um 14:25 Uhr
Hallo Torsten,

du brauchst keine Buttons. Excel kennt die sogenannte "Gültigkeit" für einen Zelleninhalt. Vorgegebene Werte können über einen Zellen-Dropdown ausgewählt werden. Sollte der User trotzdem einen anderen Wert eingeben, so kann dies überprüft und verhindert werden.
Beispiel:
01.
Sub AddValidation() 
02.
    With ThisWorkbook.Sheets("Tabelle1").Range("A1").Validation 
03.
        .Delete 
04.
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="negativ,positiv" 
05.
        .IgnoreBlank = True 
06.
        .InCellDropdown = True 
07.
        .ErrorTitle = "Falscheingabe" 
08.
        .ErrorMessage = "Entweder ""negativ"" oder ""positiv"" eingeben." 
09.
        .ShowInput = False 
10.
        .ShowError = True 
11.
    End With 
12.
End Sub
Das zweite Problem kann ich mir nur so erklären, dass du explizit angeben musst, dass sich in Variable "Cell" auch wirklich ein Cells Object befinden soll. Also so:
    For Each Cell In Selection.Cells
Grüße
rubberman
Bitte warten ..
Mitglied: 76109
07.08.2011 um 19:47 Uhr
Hallo Torsten!

Du hast vergessen die Varible b auf >= 7 (StartZeile) zu prüfen.

Etwas gekürzte Variante:
01.
Option Explicit 
02.
 
03.
Const StartZeile = 7 
04.
 
05.
Sub Datenübernahme() 
06.
    Dim a As Long 
07.
    Dim b As Long 
08.
    Dim c As Long 
09.
    Dim d As Long 
10.
    Dim e As Long 
11.
     
12.
    a = Range("I1").Value 
13.
    b = Range("J1").Value 
14.
    c = Range("H3").Value 
15.
    d = Range("I3").Value 
16.
    e = Range("J3").Value 
17.
     
18.
    If a < StartZeile Then a = StartZeile 
19.
    If b < StartZeile Then b = StartZeile 
20.
     
21.
' Pflichtfelder zum Einträgen formatieren 
22.
 
23.
    With Range("H7:K20") 
24.
        .Borders.LineStyle = xlNone 
25.
        .Interior.ColorIndex = xlNone 
26.
    End With 
27.
     
28.
    With Range(Cells(a, "H"), Cells(b, "K")) 
29.
        .Borders.LineStyle = xlContinuous 
30.
        .Interior.ColorIndex = 27 
31.
    End With 
32.
End Sub
Gruß Dieter
Bitte warten ..
Mitglied: goodbytes
08.08.2011 um 09:12 Uhr
Hallo rubbermann und Dieter,

@Dieter: Ja, stimmt. Nachdem ich die Variable auf >=7 prüfe klappt es jetzt auch.

@rubberman: Das ist natürlich eine gute Lösung. Zwei Fragen hätte ich aber noch.

Wenn ich nicht nur eine Zelle oder gleich die ganze Spalte auf Gültigkeit prüfe, sondern nur einen bestimmten Bereich (z.B. "C7:C20"), wie kann ich das realisieren.

Ein zweites Problem ist: In der Zelle kann danach "negativ" oder "positiv" stehen oder auch manuell ein Wert eingetragen werden.

Wenn ein Wert eingetragen wird läuft die Prüfung aber natürlich auf einen Fehler. Lässt sich das irgendwie vermeiden?

Oder könnte ich es irgendwie so realisieren, das die Zelle bei Eingabe von beispielsweise "n" und Enter einfach "negativ" in die Zelle schreibt?

Gruß
Torsten
Bitte warten ..
Mitglied: rubberman
08.08.2011 um 20:01 Uhr
Hallo Torsten
Zitat von goodbytes:
Wenn ich nicht nur eine Zelle oder gleich die ganze Spalte auf Gültigkeit prüfe, sondern nur einen bestimmten Bereich
(z.B. "C7:C20"), wie kann ich das realisieren.

Indem du genau diesen Zellenbereich angibst (statt "A1" in meinem Beispiel).


Zitat von goodbytes:
Ein zweites Problem ist: In der Zelle kann danach "negativ" oder "positiv" stehen oder auch manuell ein Wert
eingetragen werden.

Wenn ein Wert eingetragen wird läuft die Prüfung aber natürlich auf einen Fehler. Lässt sich das irgendwie
vermeiden?

Setze .ShowError = False


Zitat von goodbytes:
Oder könnte ich es irgendwie so realisieren, das die Zelle bei Eingabe von beispielsweise "n" und Enter einfach
"negativ" in die Zelle schreibt?

Nicht mit dieser Methode.

Grüße
rubberman
Bitte warten ..
Mitglied: goodbytes
11.08.2011 um 11:10 Uhr
Hallo rubberman,
mit dem Zellbereich, ich hatte es ja so probiert, hatte aber einen Tippfehler drin, den ich die ganze Zeit übersehen hatte.

Es funktioniert jetzt prima so, vielen Dank !!! Auch natürlich an Dieter !!!

Gruß
Torsten
Bitte warten ..
Ähnliche Inhalte
XML

Kein automatisches Backup über Button VBA

gelöst Frage von KnuefiXML2 Kommentare

Hallo zusammen, ich habe folgenden VBA Code für ein automatischen Backup dieser funktioniert leider nur über den Button Speichern ...

Outlook & Mail

Outlook 2010 "Automatisch Antworten" Button entfernen?

gelöst Frage von mb1811Outlook & Mail3 Kommentare

Hallo! Gibt es per Registry eine Möglichkeit im Outlook 2010 den Button "Automatische Antworten" zu entfernen? Wir nutzen ein ...

Windows 7

Standby-Energiespar Button und Herunterfahren Button

Frage von hgshgsWindows 73 Kommentare

Hallo ihr Administratoren, ich bin neu hier und sage einfach mal hallo. :-) Folgendes Problem: Ich würde gerne unter ...

Windows Userverwaltung

Active Directory (Roaming) Profil Ordner automatisch anlegen

Frage von Hyperlink.93Windows Userverwaltung12 Kommentare

Hallo zusammen, ich würde gerne wissen ob es normal ist, dass beim anlegen eines neuen Users im AD mit ...

Neue Wissensbeiträge
Windows Server
Erneutes Release von WS2019 und Win10 v1809
Tipp von IT-Pro vor 49 MinutenWindows Server

Hi, nachdem der Windows Server 2019 und Windows 10 in der Version 1809 aufgrund von verschwinden von Dateien nach ...

CPU, RAM, Mainboards
Spectre Update Tool für ältere PCs
Information von sabines vor 3 StundenCPU, RAM, Mainboards2 Kommentare

Mit Hilfe eines Tools wird der betreffende PC permanent von einem USB Stick gestartet, der ein passendes Microcode Update ...

Windows 10
Windows 10 Oktober 2018 Update: Es ist wieder da
Tipp von Bowsette vor 11 StundenWindows 101 Kommentar

Ein neuer Versuch von Microsoft das Windows 10 Oktober 2018 Update, auch bekannt als 1809, an den Mann zu ...

Windows Server

Windows Server 2016: Achtung - ab heute gibt es wieder Express Updates

Information von kgborn vor 22 StundenWindows Server1 Kommentar

Kurze Info für Administratoren, die Windows Server 2016 per WSUS/SCCM mit Updates betanken. Ab heute gibt es für Windows ...

Heiß diskutierte Inhalte
Microsoft Office
Lizenzierung
Frage von opc123Microsoft Office29 Kommentare

Hallo, eventuell ein oft bekanntes Thema. Office 365 ist mir zu teuer, da wir als Bildungsträger andere Konditionen beim ...

Windows 10
Windows 10 mit CRITICAL PROCESS DIED
Frage von liquidbaseWindows 1028 Kommentare

Das aktuelle Problem was ich habe steht bereits im Threadtitel. Etwas mehr zum Hintergrund soll nun folgen. Problemkind ist ...

Windows Server
Windows Server 2016 Lizenzierung - 7 Hyper V VMs
Frage von staybbWindows Server18 Kommentare

Hallo zusammen, wir haben zwei HP Server gekauft mit jeweils pro Server 2 CPUs à 10 Cores. Also insgesamt ...

Windows Server
WIE ?? Server 2016 2x RDP welche das gleiche sehen können wie VNC
Frage von ChrisXYWindows Server12 Kommentare

Hallo, aktuell habe ich Windows10 welches wohl zu Server2016 wechseln wird. Aktuell habe ich eine Video Überwachungssoftware welche per ...