Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1504to1508
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Doppelklick Zelle - Formatierung und Wert

Doppelklick Zelle - Formatierung und Wert
26.07.2016 14:43:28
Christian
Hallo zusammen,
ich würde gerne folgendes Problem mittels VBA lösen:
Durch Doppelklick in eine Zelle wird diese umrandet und 11 Zeilen oberhalb (in der selben Spalte) wird ein fixer Wert eingetragen.
Dies soll für den Bereich B46:Y52 gelten.
Ein weiteres Hindernis ist, dass durch erneutes Doppelklicken sowohl die Umrandung als auch der Wert 11 Zeilen oberhalb wieder verschwinden sollen und anstelle des Wertes wieder die eigentlich Formel dieser Zelle dort steht.
Ich vermute es wäre am einfachsten, wenn zunächst nur die Zelle durch Doppelklick umrandet wird und die Zelle, die sich 11 Zeilen oberhalb befindet, nur bei eben jener Formatierung den Wert, sonst die eingetragene Formel, annimmt.
Meine bisherige Formel zur Umrandung der Zelle, die durch Doppelklick angewählt wird, sieht wie folgt aus:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
If Not Application.Intersect(Target.EntireColumn, Range("B:Y")) Is Nothing Then
With Target.Resize(1, 1).Borders
If .Item(7).Color = 0 Then
.ColorIndex = 5
.Weight = 4
.Item(11).LineStyle = xlNone
Else
.LineStyle = xlNone
End If
End With
Cancel = True
End If
End Sub

Ich hoffe, ich habe mein Problem nicht zu kompliziert dargestellt und jemand kann mir helfen oder mich zumindest auf die richtige Spur bringen.
Mit den besten Grüßen
Christian

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelklick Zelle - Formatierung und Wert
27.07.2016 00:05:38
Christian
Hallo Christian,
mal ein Wurf zu der Aufgabenstellung. Du must im Code ein paar Namensanpassungen vornehmen und die Bereiche anpassen. Des weiteren ein Blatt "Formeln" in dem du einmalig die Formeln abspeicherst.
Das ganze NICHT in deiner Originaldatei ausprobieren!!!
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
On Error GoTo errorHandler
If Not Application.Intersect(Target.EntireColumn, Range("B:Y")) Is Nothing And Target.Count =  _
1 Then
Application.EnableEvents = False
With Target
With .Resize(1, 1).Borders
If .Item(7).Color = 0 Then
.ColorIndex = 5
.Weight = 4
.Item(11).LineStyle = xlNone
.Parent.Offset(-11).Interior.Color = rgbRed
.Parent.Offset(-11) = .Parent.Offset(-11).Value
Else
.LineStyle = xlNone
With .Parent.Offset(-11)
.Interior.Color = xlNone
.Formula = IIf(FormelHolen(.Address) = "", .Value, FormelHolen(.Address))
End With
End If
End With
End With
Cancel = True
Application.EnableEvents = True
End If
Exit Sub
errorHandler:
Application.EnableEvents = True
End Sub
'' Nur einmal ausführen um die Formel  zu speichern, Vorher leeres Blatt "Formeln" anlegen
Sub FormelnMerken()
Dim oDict As Object
Dim rng As Range
Dim i As Long
Dim e As Variant
Dim strWsQ$, strWsF$ ' as String
Set oDict = CreateObject("scripting.dictionary")
'' Anpassen
strWsQ = "RGB" ' Blatt mit Markierfunktion
strWsF = "Formeln" ' Blatt mit gespeicherten Formeln
'' Bereich anpassen, aus diesem Bereich werden die Formeln abgesaugt
Set rng = ThisWorkbook.Worksheets(strWsQ).Range("A1:D20") 'Range("B46:Y52")
For Each e In rng.SpecialCells(xlCellTypeFormulas)
oDict.Item(e.Address) = e.Formula
Next e
'    ' Alle Daten Löschen
With ThisWorkbook.Worksheets(strWsF).Range("A1").CurrentRegion.Offset(1, 0).Resize( _
Worksheets(strWsF).Range("A1").CurrentRegion.Rows.Count - 1)
.Interior.Color = rgbYellowGreen
.Clear
End With
i = 1
For Each e In oDict.keys()
i = i + 1
With ThisWorkbook.Worksheets(strWsF)
.Cells(i, 1) = e
.Cells(i, 2) = "'" & oDict.Item(e)
End With
Next e
End Sub
Function FormelHolen(ByVal strAddr As String) As String
Dim oDict As Object
Dim rng As Variant
Dim strWsF   As String
Dim i As Long
Set oDict = CreateObject("scripting.dictionary")
strWsF = "Formeln" ' Blatt mit gespeicherten Formeln, anpassen!!!!
rng = Application.WorksheetFunction.Transpose(ThisWorkbook.Worksheets(strWsF).Range("A1"). _
CurrentRegion)
For i = 1 To UBound(rng, 2)
oDict.Item(rng(1, i)) = rng(2, i)
Next i
FormelHolen = oDict.Item(strAddr)
End Function
Gruß, Christian
p.s. Kann erst morgen Abend wieder reinschauen.
Anzeige
AW: Doppelklick Zelle - Formatierung und Wert
27.07.2016 10:03:49
Christian
Hallo Christian,
vielen Dank, dein Code funktioniert fast perfekt :)
Eine Sache, was womöglich oder bestimmt mein Fehler sein wird:
Beim Doppelklick auf die Zelle soll in der Zelle 11 Zeilen oberhalb ein fixer Wert (hinterlegt in Zelle B32) einfügt werden. Das Einfügen der hinterlegten Formeln beim Entfernen der Umrandung klappt super.
Mit den besten Grüßen
Christian
AW: Doppelklick Zelle - Formatierung und Wert
27.07.2016 13:40:31
Christian
Ah, ich habe es hinbekommen.
Dürfte jetzt einwandfrei laufen, vielen Dank :)
...schön das es funktioniert! OwT
28.07.2016 11:33:31
Christian
AW: ...schön das es funktioniert! OwT
28.07.2016 18:07:58
Christian
Hallo Namensvetter,
ein Problem hat sich jetzt doch noch herausgestellt:
Ich kann die Zelle rechts neben einer bereits umrandeten Zelle nicht auch mit einem Doppelklick umranden.
Ich hoffe Du liest das noch und kannst mir helfen!
Mit den besten Grüßen
Christian
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige