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

Entwicklung

"Herunterfahren" Button umleiten

gelöst Frage von NewNoobEntwicklung7 Kommentare

Hallo, gibt es irgend eine Möglichkeit das ich den "Herunterfahren" Knopf über Start - Herunterfahren irgendwie umleite also an ...

Microsoft Office

EXEL Button +1

gelöst Frage von maxmyhMicrosoft Office9 Kommentare

Hallo Leute. Ich muss für meine Bachelorarbeit ein Verkehrsvideo auswerten und dafür verschiedene Sachen zählen. Ich möchte das mittels ...

Neue Wissensbeiträge
Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 1 TagInternet5 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 2 TagenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 2 TagenWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Sicherheit

Heise Beitrag Passwort-Sammlung mit 773 Millionen Online-Konten im Netz aufgetaucht

Information von Penny.Cilin vor 2 TagenSicherheit6 Kommentare

Auf Heise Online ist folgender Beitrag veröffentlicht worden: Heise Beitrag passwörter geleakt Ich bin mir jetzt nicht ganz sicher, ...

Heiß diskutierte Inhalte
TK-Netze & Geräte
TAPI auf einem Win2016Server installieren und einrichten
Frage von wstabelTK-Netze & Geräte32 Kommentare

Hallo liebe Admins, ich habe folgende Situation: 1 Windows Server 2016 Standard als DC 1 SNOM 710 IP-Telefon 1 ...

Batch & Shell
Mit findstr batch doppelte zeilen einer txt löschen
Frage von Burningx2Batch & Shell25 Kommentare

Hi Vor einer weile habe ich im netzt einen windows shell befehl gefunden mit welchem man über die konsole ...

Microsoft
Übertragung von MS Volumenlizenzen
Frage von SherlockineMicrosoft20 Kommentare

Ich bin Angestellte in einer kleinen 10-köpfigen IT-Firma, die Netzwerklösungen, Telefonielösungen und Ähnliches anbietet. Im Sommer hatten wir einen ...

Windows 10
Robocopy Quelle und Ziel vertauscht Daten gelöscht ?
Frage von eastclintwoodWindows 1020 Kommentare

Hallo, ich wollte Daten von einer extrernen Festplatte (USB) auf eine interne Platte per robocopy sichern. Leider habe ich ...