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 VBA Makro, WENN Zellenwert, dann Zellen verbinden

Frage Microsoft Microsoft Office

Mitglied: fireless

fireless (Level 1) - Jetzt verbinden

04.12.2014, aktualisiert 08.12.2014, 2357 Aufrufe, 6 Kommentare, 1 Danke

Hallo,

ich verzweilfe an einem Makro.. Ich will folgendes machen
Per Drop-Down-Menü kann man auswählen: "Arbeitszeit" oder "Materialkosten"

Wenn nun "Materialkosten" im Drop-Down-menü ausgewählt wird, dann sollen sich die Zellen H35:M35 automatisch verbinden...sodass hier ein Text eingegeben werden kann. =WENN(D35="Materialkosten";Makro1;0))

Wäre Top wenn jemand eine Lösung für mich hat!!!! Danke

Gruß
fireless
Mitglied: colinardo
LÖSUNG 05.12.2014, aktualisiert 08.12.2014
Hallo fireless,
das ganze in den Codeabschnitt des entsprechenden Worksheets kopiert (Wichtig: Es darf nicht in ein Makro-Modul kopiert werden, sonst funktioniert das Change-Event nicht!)
01.
Private Sub Worksheet_Change(ByVal Target As Range) 
02.
  With ActiveSheet 
03.
    Set rngSource = .Range("D35") 
04.
    If Not Application.Intersect(rngSource, Target) Is Nothing Then 
05.
        If rngSource.Value = "Materialkosten" Then 
06.
            .Range("H35:M35").Merge 
07.
        Else 
08.
            .Range("H35:M35").UnMerge 
09.
        End If 
10.
    End If 
11.
  End With 
12.
End Sub
=WENN(D35="Materialkosten";Makro1;0)
Das was du hier vorhast funktioniert deswegen nur beschränkt, weil Funktionen die in Formeln benutzt werden sollen, keine anderen Zellen verändern dürfen!
Siehe http://www.cpearson.com/excel/differen.htm

Obiges Makro nutzt deshalb ein Ereignis das Auftritt sobald sich eine Zelle auf dem Arbeitsblatt ändert. Es vergleicht dann ob die Zelle D35 verändert wurde, und wenn ja ob sie den Inhalt "Materialkosten" hat. Zusâtzlich wird geprüft ob der Bereich schon "gemerged" ist und wenn nicht, wird er zu einer Zelle zusammengefasst.

Grüße Uwe
Bitte warten ..
Mitglied: rubberman
05.12.2014 um 18:59 Uhr
Hallo Uwe.

Ich bin völlig bei deiner Lösung, aber ...
... weil Funktionen die in Formeln benutzt werden sollen, keine anderen Zellen verändern dürfen! ...
... nee. Just For Fun (in einem Standardmodul):
01.
Option Explicit 
02.
 
03.
Public Function merge(ByRef rng As Range) As String 
04.
    Application.Volatile 
05.
    rng.merge 
06.
    merge = "" 
07.
End Function 
08.
 
09.
Public Function unmerge(ByRef rng As Range) As String 
10.
    Application.Volatile 
11.
    rng.unmerge 
12.
    unmerge = "" 
13.
End Function
In der Tabelle (z.B. C35):
=WENN(D35="Materialkosten";merge(H35:M35);unmerge(H35:M35))
Getestet auf den beiden nicht mehr taufrischen Versionen 2003 und 2007.

@fireless
Das ist alles andere als Best Practice und du solltest definitiv Uwes Vorschlag vorziehen. Du verbaust dir eine Zelle, die du für nichts anderes nutzen kannst, als für die Formel. Macht man nicht, aber entgegen der Erwartungen dass Excel das nicht zulässt, funktioniert so etwas doch.

Grüße
rubberman
Bitte warten ..
Mitglied: colinardo
05.12.2014, aktualisiert um 19:11 Uhr
Das ist alles andere als Best Practice
Yip deswegen wollte ich es ihm auch gar nicht erst zeigen ... nun erfährt ers dann doch

Grüße Uwe
Bitte warten ..
Mitglied: Eintagsfliege
06.12.2014 um 12:15 Uhr
Hallo rubberman!

Getestet auf den beiden nicht mehr taufrischen Versionen 2003 und 2007.

Getestet in Excel 2013 funktioniert es nicht. Steigt beim <rng.merge> aus, bringt den Fehler '#WERT' und verbunden wird nix...

Grüße Dieter
Bitte warten ..
Mitglied: rubberman
06.12.2014 um 17:52 Uhr
Hallo Dieter,

dann ist ja mittlerweile alles wie es eigentlich sein sollte

Grüße
rubberman
Bitte warten ..
Mitglied: fireless
08.12.2014, aktualisiert um 19:44 Uhr
Hi Uwe,
wow! Vielen vielen Dank für die Lösung!!!

Macht genau das was ich wollte! Wenn das für mich immer nur so einfach wäre ! Jetzt leuchtet mir auch alles ein...

Nochmals 1000x Danke!

War die letzen Tage leider offline... Vielen Dank auch an alle beteiligten @rubberman , @Eintagsfliege !!!

Grüße und eine schöne Woche,

fireless
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
VB for Applications
gelöst Excel VBA Eine oder mehrere Zellen Verschieben (2)

Frage von batchnewbie zum Thema VB for Applications ...

Microsoft Office
gelöst CSV-Datei mit einem VBA Makro in Excel einlesen und leicht anpassen (5)

Frage von JoSiBa zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...