Autor
|
Thema: VBA 2 Zellen in Abhängigkeit. (666 mal gelesen)
|
AndreasBo Mitglied TZ & Konstruktion
Beiträge: 861 Registriert: 16.11.2006 ******** Wenn am Anfang alles schief geht, nenne es Version 1.0!
|
erstellt am: 07. Mrz. 2017 13:17 <-- editieren / zitieren --> Unities abgeben:
Hallo, durch Doppelklick in eine Zelle wird diese verändert. Dies geschieht auch in einer 2ten Zelle. Soweit der Code unten. Wie stelle ich es an, dass die beiden Zellen in Abhängigkeit (entgegengesetzt) unterschiedlich sind. Code: 'Bei Doppelklick in Bestimmte Zelle soll der Text verändert werden.Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) If Target.Address = "$A$3" Or Target.Address = "$A$4" Then With Target.Font .Strikethrough = Not .Strikethrough 'Durchstreichen oder nicht durchstreichen. .Bold = Not .Bold 'Fett oder nicht fett. If .Size = 16 Then 'Schriftgröße einstellen .Size = 14 Else .Size = 16 End If End With Cancel = True End If End Sub
------------------ Gruß AndreasBo Ich nutze alte Boardsuche | Google | Netiquette | Wie stellt man Fragen richtig? | Systeminfo ******** PTC Creo 3 ******** IntelCore i7-3820 CPU | @ 3,60 GHz | Windows 7 Pro 64 BIT | 16GB RAM | AMD FirePro W5000 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AndreasBo Mitglied TZ & Konstruktion
Beiträge: 861 Registriert: 16.11.2006 ******** Wenn am Anfang alles schief geht, nenne es Version 1.0!
|
erstellt am: 07. Mrz. 2017 15:03 <-- editieren / zitieren --> Unities abgeben:
Habe noch etwas selber Probiert und es funktioniert nach dem Code unten. Für Verbesserungsvorschläge bin ich immer offen. Code: 'Bei Doppelklick in Bestimmte Zelle soll der Text verändert werden.Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) If Target.Address = "$A$3" Then With Target.Font .Strikethrough = Not .Strikethrough 'Durchstreichen oder nicht durchstreichen. .Bold = Not .Bold 'Fett oder nicht fett. If .Size = 16 Then 'Schriftgröße einstellen .Size = 14 Else .Size = 16 End If End With If Target.Font.Strikethrough = yes Then With Range("A4").Font .Bold = False .Size = 14 .Strikethrough = True End With Else With Range("A4").Font .Bold = True .Size = 16 .Strikethrough = False End With End If Cancel = True End If '+++++++++++++++++++++++++++++++++++++++ '++++Ab hier die 2te Zelle auswerten++++ '+++++++++++++++++++++++++++++++++++++++ If Target.Address = "$A$4" Then With Target.Font .Strikethrough = Not .Strikethrough 'Durchstreichen oder nicht durchstreichen. .Bold = Not .Bold 'Fett oder nicht fett. If .Size = 16 Then 'Schriftgröße einstellen .Size = 14 Else .Size = 16 End If End With If Target.Font.Strikethrough = yes Then With Range("A3").Font .Bold = False .Size = 14 .Strikethrough = True End With Else With Range("A3").Font .Bold = True .Size = 16 .Strikethrough = False End With End If Cancel = True End If End Sub
------------------ Gruß AndreasBo Ich nutze alte Boardsuche | Google | Netiquette | Wie stellt man Fragen richtig? | Systeminfo ******** PTC Creo 3 ******** IntelCore i7-3820 CPU | @ 3,60 GHz | Windows 7 Pro 64 BIT | 16GB RAM | AMD FirePro W5000 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 778 Registriert: 18.05.2005 SolidWorks 2020 x64 SP3.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 21H1 Microsoft Office 365 ProPlus Microsoft Visual Studio Enterprise 2022
|
erstellt am: 07. Mrz. 2017 16:54 <-- editieren / zitieren --> Unities abgeben: Nur für AndreasBo
Hallo AndreasBo Ich würde als erstes "Option Explicit" verwenden. Dann merken man, dass die Variable "yes" nicht deklariert und ihr keinen Wert zugewiesen wurde. In deinem Fall, also ohne "Option Explicit", ist "yes" ein Boolean mit dem Wert "False". Und nach ein wenig entrümpeln sieht dein Code dann so aus.
Code: Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) If Target.Address = "$A$3" Or Target.Address = "$A$4" Then Dim bRet As Boolean 'Hilfsvariable zum Umschalten With Range("A3").Font bRet = Not .Strikethrough .Strikethrough = bRet 'Durchstreichen oder nicht durchstreichen. .Bold = Not bRet 'Fett oder nicht fett. .Size = IIf(bRet, 14, 16) 'Schriftgröße einstellen End With With Range("A4").Font .Strikethrough = Not bRet .Bold = bRet .Size = IIf(bRet, 16, 14) End With Cancel = True End If End Sub
Gruss Andreas ------------------ 21 ist nur die halbe Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AndreasBo Mitglied TZ & Konstruktion
Beiträge: 861 Registriert: 16.11.2006 ******** Wenn am Anfang alles schief geht, nenne es Version 1.0!
|
erstellt am: 09. Mrz. 2017 08:07 <-- editieren / zitieren --> Unities abgeben:
|