Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Excel: per VBA in Abhängigkeit von Wert Zeilen aus- oder einblenden

Frage Microsoft Microsoft Office

Mitglied: philbo20

philbo20 (Level 1) - Jetzt verbinden

23.10.2014 um 09:57 Uhr, 1394 Aufrufe, 10 Kommentare

Hallo zusammen,

ich habe eine Excel-Tabelle, in der ich in einer Zelle ein Datum stehen habe.
Nun würde ich gerne folgendes lösen:

Ist das Datum in der Zelle = das heutige Datum, sollen die Zeilen 7 und 13 ausgeblendet werden.
Zeitgleich soll der Inhalt der Zellen A8 bis A12 in "1.", "2.", "3.", "4." und "5." geändert werden (war vorher 2. bis 6.).
Ist das Datum nicht das Tagesdatum, sollen die Zeilen eingeblendet bleiben (bzw. werden, falls sie es nicht sind).

Kann doch eigentlich nicht so schwer sein, oder?

Viele Grüße
Philipp
Mitglied: colinardo
LÖSUNG 23.10.2014, aktualisiert um 13:22 Uhr
Hallo Phillip,
im Beispiel steht dein Datum in Zelle A1
01.
Sub CheckDate() 
02.
    Dim ws As Worksheet 
03.
    Set ws = Sheets(1) 
04.
    With ws 
05.
        'Wenn Zelle A1 = Heutiges Datum dann 
06.
        If .Range("A1").Value = Date Then 
07.
            'Neue Werte eintragen 
08.
            cnt = 1 
09.
            For i = 8 To 12 
10.
                .Range("A" & i).Value = cnt & "." 
11.
                cnt = cnt + 1 
12.
            Next 
13.
            'Zeilen 7 und 13 ausblenden 
14.
            .Rows(7).Hidden = True 
15.
            .Rows(13).Hidden = True 
16.
        Else 
17.
            'Zeilen einblenden 
18.
            .Rows(7).Hidden = False 
19.
            .Rows(13).Hidden = False 
20.
        End If 
21.
 
22.
    End With 
23.
End Sub
Grüße Uwe
Bitte warten ..
Mitglied: philbo20
23.10.2014 um 11:27 Uhr
Hi,
danke soweit schonmal. Irgendwie klappt es aber noch nicht...
liegt es daran, dass in der Zelle mit dem Datum eine Funktion steckt, die das Datum von einem anderen Tabellenblatt ermittelt???
Ich vermute, dass hier geprüft wird, ob die Formel = heutiges Datum ist. Aber das trifft ja niemals zu.
Zudem sollte nicht Zeile 7 bis 13 ausgeblendet werden, sondern nur 7 und 13.
Dann muss ich ws.Range(7).EntireRow.Hidden und ws.Range(13).EntireRow.Hidden = true setzen, oder?
Bitte warten ..
Mitglied: colinardo
23.10.2014, aktualisiert um 11:38 Uhr
Zitat von philbo20:
liegt es daran, dass in der Zelle mit dem Datum eine Funktion steckt, die das Datum von einem anderen Tabellenblatt ermittelt???
ist oben dahingehend angepasst. Ich gehe davon aus das deine Zelle aber das Datumsformat hat ...
Zudem sollte nicht Zeile 7 bis 13 ausgeblendet werden, sondern nur 7 und 13.
OK das hatte ich missverstanden, sorry. Ist ebenfalls oben angepasst...

Grüße Uwe
Bitte warten ..
Mitglied: philbo20
23.10.2014 um 11:48 Uhr
Hallo nochmal Uwe,

hmm irgendwie passiert gar nix, wenn ich den Code einfüge. Zwar keine Fehlermeldung, aber es wird auch nix ein oder ausgeblendet.
Ich habe zum Testen schonmal "If .Range("A1").Value = "23.10.2014"" eingetragen, allerdings passiert da auch nichts.
Gruß
Philipp
Bitte warten ..
Mitglied: colinardo
23.10.2014, aktualisiert um 11:56 Uhr
Zitat von philbo20:
hmm irgendwie passiert gar nix, wenn ich den Code einfüge. Zwar keine Fehlermeldung, aber es wird auch nix ein oder
ausgeblendet.
Hast du das Sheet angepasst (Zeile 3) auf dem dies passieren, soll, läuft hier nämlich einwandfrei !
Ich habe zum Testen schonmal "If .Range("A1").Value = "23.10.2014"" eingetragen, allerdings passiert
Ist deine Datumszelle als Datum oder als Text formatiert ? Ich gehe hier vom Datumsformat aus ...
Bitte warten ..
Mitglied: philbo20
23.10.2014, aktualisiert um 12:00 Uhr
Zitat von colinardo:
Hast du das Sheet angepasst (Zeile 3) auf dem dies passieren, soll, läuft hier nämlich einwandfrei !

Nee, daran wird es wohl liegen.
Gebe ich die Nummer an, oder den Namen des Blatts?
Also z.B. Set ws = sheets("Test") ?

Die Zelle ist als Datum formatiert. Würde .Value nicht mit Text funktionieren?
Bitte warten ..
Mitglied: colinardo
23.10.2014, aktualisiert um 12:06 Uhr
Zitat von philbo20:
Nee, daran wird es wohl liegen.
Gebe ich die Nummer an, oder den Namen des Blatts?
Also z.B. Set ws = sheets("Test") ?
Ja genau entweder als Text oder die Positionsnummer des Blattes.

Die Zelle ist als Datum formatiert. Würde .Value nicht mit Text funktionieren?
Nein, du müstest den Vergleich dann aber nicht mit Date machen sondern z.B. so
.Range("A1").Value = Format(Date, "dd.mm.yyyy")
Da du hier einen String vergleichst, denn Date liefert nämlich als Wert eine Zahl, und das ist der Fall wenn eine Zelle in Excel als Datum formatiert ist !
Bitte warten ..
Mitglied: philbo20
23.10.2014 um 12:06 Uhr
Danke für deine Hilfe...es hat soweit jetzt funktioniert.
Aber komischer Weise nur, wenn ich im Codeeditor auf "ausführen" klicke bzw F5 drücke...
woran liegt das denn jetzt noch?? Hast du eine Idee.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 23.10.2014, aktualisiert um 13:22 Uhr
Zitat von philbo20:

Danke für deine Hilfe...es hat soweit jetzt funktioniert.
Aber komischer Weise nur, wenn ich im Codeeditor auf "ausführen" klicke bzw F5 drücke...
woran liegt das denn jetzt noch?? Hast du eine Idee.
das hast du ja nicht gesagt das du diese Funktion so haben wolltest ,ist aber kein Problem, dazu musst du den Code in den entsprechenden Codeabschnitt des Tabellenblatts verschieben und so anpassen:
(In Zeile 3 die Zelle anpassen auf dessen Änderungen die Überprüfung stattfinden soll):
01.
Private Sub Worksheet_Change(ByVal Target As Range) 
02.
    'Range bei dem eine Änderung etwas bewirken soll 
03.
    Set changeRange = Range("A1") 
04.
    If Not Application.Intersect(changeRange, Target) Is Nothing Then 
05.
        CheckDate 
06.
    End If 
07.
End Sub 
08.
 
09.
Sub CheckDate() 
10.
    Dim ws As Worksheet 
11.
    Set ws = Sheets(1) 
12.
    With ws 
13.
        'Wenn Zelle A1 = Heutiges Datum dann 
14.
        If .Range("A1").Value = Date Then 
15.
            'Neue Werte eintragen 
16.
            cnt = 1 
17.
            For i = 8 To 12 
18.
                .Range("A" & i).Value = cnt & "." 
19.
                cnt = cnt + 1 
20.
            Next 
21.
            'Zeilen 7 und 13 ausblenden 
22.
            .Rows(7).Hidden = True 
23.
            .Rows(13).Hidden = True 
24.
        Else 
25.
            'Zeilen einblenden 
26.
            .Rows(7).Hidden = False 
27.
            .Rows(13).Hidden = False 
28.
        End If 
29.
 
30.
    End With 
31.
End Sub
Bitte warten ..
Mitglied: philbo20
23.10.2014 um 13:21 Uhr
Zitat von colinardo:
das hast du ja nicht gesagt das du diese Funktion so haben wolltest ,ist aber kein Problem, dazu musst du den Code in den
entsprechenden Codeabschnitt des Tabellenblatts verschieben und so anpassen:
(In Zeile 3 die Zelle anpassen auf dessen Änderungen die Überprüfung stattfinden soll):

Stimmt, hatte ich nicht erwähnt

Muss auch eigentlich nur beim Öffnen geprüft werden, habe daher jetzt
Sub Workbook_Open() verwendet.

Da es mehrere Arbeitsblätter gibt, habe ich jetzt den auszublendenden Zeilen einen Namen (Zeilennummern sind unterschiedlich) gegeben und lasse sie mit .Range('Name") ein- bzw. ausblenden.

Danke dir vielmals für die Hilfe!

Gruß
Philipp
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Microsoft Office
Excel VBA: Tranferieren von Werten aus Quelldatei in die Masterdatei mit SVERWEIS (3)

Frage von peter.schroeder zum Thema Microsoft Office ...

Microsoft Office
EXCEL VBA Termindaten aus Tabelle Filtern

Frage von t3jxbus zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel VBA Letzte Zelle Suchen dann rechnen und Wert in Zelle Übertragen (3)

Frage von Addi089 zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel VBA Wert hochzählen (1)

Frage von Florian86 zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...