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, 4233 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 ...

Batch & Shell

Per Batch automatisch Ordnerstrukturen anlegen

gelöst Frage von evolutionBatch & Shell

Hallo, weiß jemand ob es möglich ist per Batch-Datei automatisch mit einer Eingabe Ordnerstrukturen anlegen zu lassen? Folgendes Szenario ...

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 ...

Neue Wissensbeiträge
Datenschutz

Die Datenkrake Google verlängert ihr Arme mal wieder ein wenig, automatische Anmeldung

Tipp von magicteddy vor 17 StundenDatenschutz2 Kommentare

Benutzer mit einem Google Account und gespeicherten Zugangsdaten werden von chrome 69 automatisch bei Google angemeldet, natürlich alles zum ...

Verschlüsselung & Zertifikate
Meine Wissenssammlung zu Bitlocker
Erfahrungsbericht von DerWoWusste vor 1 TagVerschlüsselung & Zertifikate3 Kommentare

Die Motivation für diesen Beitrag waren die vielen Posts rund um dieses Thema, die deutlich machen, wie viele Einzelaspekte ...

E-Mail
Email-Apps und Verhalten bei Pop3
Erfahrungsbericht von kfranzk vor 3 TagenE-Mail11 Kommentare

Hallo Freunde, da mir mein diesbezüglicher Faden als gelöst markiert wurde, muss ich hier neu aufsetzen. Ich arbeite bewusst ...

Hyper-V

Optimiertes Ubuntu per Microsoft Hyper-V-Schnellerstellung verfügbar

Anleitung von Frank vor 3 TagenHyper-V1 Kommentar

Für Microsofts Virtualisierungssoftware Hyper-V ist ab sofort auch ein optimiertes Ubuntu 18.04.1 LTS verfügbar. In der "Hyper-V-Schnellerstellung" App, die ...

Heiß diskutierte Inhalte
Hardware
Sophos SG135 - Routing
gelöst Frage von Xaero1982Hardware22 Kommentare

Moin Zusammen, ich ersetze gerade nen alten Cisco DualWAN Router durch eine SG 135. Ich muss bestimmte Ziele über ...

E-Mail
Welche ist die beste E-Mail Groupware für die Zukunft?
Frage von ITCrowdSupporterE-Mail18 Kommentare

Guten Tag allerseits :) Ich möchte mich mit einer Frage heute mal an die Schwarmintelligenz wenden. Aktuell befasse ich ...

Windows Server
In-Place Upgrade von Windows Server 2008 R2 Datacenter zu Windows Server 2016 Datacenter (Zwischenschritt über 2012 R2)
gelöst Frage von TowerpleaseWindows Server16 Kommentare

Hallo Administratoren, Wir haben uns vor ein paar Monaten Windows Server 2016 Datacenter Lizenzen gekauft und wollen nun unsere ...

Windows 7
Mit gpedit gesetzte Richtlinien in rsop.msc nicht definiert und ausgegraut
gelöst Frage von 137006Windows 715 Kommentare

Hallo zusammen, anfangs verweise ich fairerweise daruf dass ich dieses Thema bereits im Forum angeschnitten habe, nachdem ich hier ...