Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1672to1676
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

Makro in Private Sub integrieren?

Makro in Private Sub integrieren?
06.02.2019 19:46:03
David
Hallo,
ich möchte 2 Formeln verbinden, weiss aber nicht wie.
Einmal bestimme ich hiermit die Position eines Kommentarfeldes:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim cmt As Comment
Application.DisplayCommentIndicator = xlCommentIndicatorOnly
Set cmt = ActiveCell.Comment
If Not cmt Is Nothing Then
With ActiveWindow.VisibleRange
cmt.Shape.Width = 100
cmt.Shape.Top = cmt.Parent.Top - 150
cmt.Shape.Left = .Left + 200
cmt.Visible = True
End With
End If
End Sub

Ich wollte nun noch die Höhe automatisch anpassen, was sich wohl als sehr schwierig heraus gestellt hat. Hier hat jemand eine Lösung gefunden indem er die Höhe von der Anazhl der Zeichen abhängig macht, jedoch als Macro.
Ich hätte gerne dieses Makro im Code oben integriert.
Sub ResetCommets2()
Dim ct As Integer, ht As Integer
Dim cmt As Comment
For Each cmt In ActiveSheet.Comments
ct = cmt.Shape.TextFrame.Characters.Count
cmt.Shape.Top = cmt.Parent.Top + 5
cmt.Shape.Left = _
cmt.Parent.Offset(0, 1).Left + 5
cmt.Shape.Width = 100
If ct = 30 And ct 
Ich denke das müsste doch möglich sein?
Vielen Dank schonmal
David

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro in Private Sub integrieren?
07.02.2019 08:57:09
Karl-Heinz
Hallo David,
zum "Verbinden" Deiner zwei Sub's (nicht Formeln) brauchst Du ja nur die eine Sub aus der anderen Sub heraus aufrufen:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim cmt As Comment
   Application.DisplayCommentIndicator = xlCommentIndicatorOnly
   Set cmt = ActiveCell.Comment
   If Not cmt Is Nothing Then
      With ActiveWindow.VisibleRange
         cmt.Shape.Width = 100
         cmt.Shape.Top = cmt.Parent.Top - 150
         cmt.Shape.Left = .Left + 200
         cmt.Visible = True
         Call ResetCommets2()
      End With
End If
End Sub


Allerdings werden dann ja immer alle Kommentare auf dem Blatt bearbeitet. Ist das gewünscht?
Du kannst auch den Code der zweiten Sub direkt in die erste Sub integrieren:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
  Dim cmt As Comment, ct As Integer, ht As Integer
  Application.DisplayCommentIndicator = xlCommentIndicatorOnly
  Set cmt = ActiveCell.Comment
  If Not cmt Is Nothing Then
     With ActiveWindow.VisibleRange
         cmt.Shape.Width = 100
         cmt.Shape.Top = cmt.Parent.Top - 150
         cmt.Shape.Left = .Left + 200
         ct = cmt.Shape.TextFrame.Characters.Count
         If ct < 30 Then ht = 250
         If ct >= 30 And ct <= 150 Then ht = 100 ' and so on...
         cmt.Shape.Height = ht
         cmt.Shape.Visible = True
     End With
  End If
End Sub

viele Grüße
Karl-Heinz

Anzeige
AW: Makro in Private Sub integrieren?
07.02.2019 16:14:01
David
Hallo Karl-Heinz,
vielen DAnk für eine Nachricht.
So ähnlich hatte ich es auch schon versucht.
Allerdinigs wenn ich den von dir angebotenen Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim cmt As Comment, ct As Integer, ht As Integer
Application.DisplayCommentIndicator = xlCommentIndicatorOnly
Set cmt = ActiveCell.Comment
If Not cmt Is Nothing Then
With ActiveWindow.VisibleRange
cmt.Shape.Width = 100
cmt.Shape.Top = cmt.Parent.Top - 150
cmt.Shape.Left = .Left + 200
ct = cmt.Shape.TextFrame.Characters.Count
If ct = 30 And ct 
einfüge wird die Kommentatfeldhöhe nicht korrekt berrechnet. Das Feld ist dann in der Höhe so klein das es nicht angezeigt wird. Woran kann das liegen?
Vielen Dank.
David
Anzeige
AW: Makro in Private Sub integrieren?
07.02.2019 19:17:29
David
Hallo Karl-Heinz,
vielen Dank nochmals für deien Nachricht.
Es klappt nun alles, es war mein Fehler da ich nicht bedacht habe das
 If ct = 30 And ct 
nur Zeichen bis 150 einschließt. Daher wurde alles darüber klein angezeigt.
Vielen Dank nochmal. Danke aber auch generell an alle hier im Forum. Hier bekommt man tatsächlich immer Hilfe angeboten. ICh wünsche einen schönen Abend. LG David
AW: Makro in Private Sub integrieren?
07.02.2019 23:04:35
Karl-Heinz
Hallo David,
danke für die Rückmeldung. An diesem Beispiel sieht man dann doch, dass bei der Programmierung immer jede Möglichkeit berücksichtigt werden sollte.
VG KH
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige