unbekannte Textbox löschen

19/04/2009 - 19:35 von Willy Steffen | Report spam
Guten Tag Alle
Ich möchte gerne eine Textbox löschen, die an einer definierten Zelle
"ActiveCell" mit .top .left etc positioniert wurde. Ich sollte diese gezielt
löschen können. Jetzt habe ich es auf Umwegen geschafft, indem ich den
Textboxname in eine Public Variable speichere und diese dann lösche. Kann mir
da jemand helfen?
Ich danke bereits für etwelche Bemühungen im Voraus
Willy

Hier den Code:
Die Kommentare werden in der 2te Zeile von einem anderen Makro eingetragen
und an die active Zelle soll der Text in ein Textfeld geschrieben werden.
Manchmal gibt es mehrere Zeilen die Nacheinander in den Kommentar geschrieben
werden. Bei jeder Zeile wird dann eine Textbox erstellt und legt diese
übereinander. Dies stört mich und möchte jeweils die Untere löschen.
Option Explicit
Public TXTbName As String

Sub Textfeld1()
Dim X As Object
Dim AktZelle As Range
Dim txtBox As Shape, TXTBoxName
Dim ZellTXT As String, Nom
Dim Spalte As Long, Zeile
'Kommentar holen
Spalte = ActiveCell.Column
Zeile = ActiveCell.Row
ZellTXT = Cells(2, Spalte).Comment.Text
'Textbox an Zellen positionieren
Set AktZelle = Cells(Zeile, Spalte)
'TXTboxbreite bestimmen
Set X = Columns(Spalte)
'Textboxvariablen setzten
Set txtBox = Worksheets(1).Shapes.AddTextbox( _
msoTextOrientationUpward, AktZelle.Left, AktZelle.Top + 15, _
X.Width - 1, 105)
'Textfeld setzen und TXTboxname speichern
With txtBox.TextFrame.Characters
.Text = ZellTXT
.Font.Name = "Arial"
.Font.Size = 8
.Font.Background = xlBackgroundAutomatic ' xlBackgroundTransparent
TXTBoxName = .Parent.Name
End With
ActiveSheet.Shapes(TXTBoxName).Select
TXTbName = TXTBoxName 'Public Variable
Debug.Print TXTBoxName
'Text ausrichten
With Selection
.HorizontalAlignment = xlLeft 'xlRight
.VerticalAlignment = xlVAlignBottom 'xlVAlignBottomCenter
End With
'Formatierung der TXTbox
Selection.ShapeRange.Line.Visible = msoFalse
Selection.ShapeRange.TextFrame.MarginLeft = 0#
Selection.ShapeRange.TextFrame.MarginRight = 0#
Selection.ShapeRange.TextFrame.MarginTop = 0#
Selection.ShapeRange.TextFrame.MarginBottom = 0#
'Vorherige Zelle wieder aktivieren
Cells(Zeile, Spalte).Activate
End Sub

Sub Textfeld2()
Dim X As Object
Dim AktZelle As Range
Dim txtBox As Shape, TXTBoxName
Dim ZellTXT As String, Nom
Dim Spalte As Long, Zeile

'Abfragen ob Variable TXTbName leer ist
If TXTbName = "" Then Call Textfeld1
'Löschen der Textbox
ActiveSheet.Shapes(TXTbName).Delete
'Kommentar holen
Spalte = ActiveCell.Column
Zeile = ActiveCell.Row
ZellTXT = Cells(2, Spalte).Comment.Text
'Textbox an Zellen positionieren
Set AktZelle = Cells(Zeile, Spalte)
'TXTboxbreite bestimmen
Set X = Columns(Spalte)
'Textboxvariablen setzten
Set txtBox = Worksheets(1).Shapes.AddTextbox( _
msoTextOrientationUpward, AktZelle.Left, AktZelle.Top + 15, _
X.Width - 1, 105)
'Textfeld setzen und TXTboxname speichern
With txtBox.TextFrame.Characters
.Text = ZellTXT
.Font.Name = "Arial"
.Font.Size = 8
.Font.Background = xlBackgroundAutomatic ' xlBackgroundTransparent
TXTBoxName = .Parent.Name
End With
ActiveSheet.Shapes(TXTBoxName).Select
TXTbName = TXTBoxName
Debug.Print TXTBoxName
'Text ausrichten
With Selection
.HorizontalAlignment = xlLeft 'xlRight
.VerticalAlignment = xlVAlignBottom 'xlVAlignBottomCenter
End With
'Formatierung der TXTbox
Selection.ShapeRange.Line.Visible = msoFalse
Selection.ShapeRange.TextFrame.MarginLeft = 0#
Selection.ShapeRange.TextFrame.MarginRight = 0#
Selection.ShapeRange.TextFrame.MarginTop = 0#
Selection.ShapeRange.TextFrame.MarginBottom = 0#
'Vorherige Zelle wieder aktivieren
Cells(Zeile, Spalte).Activate
End Sub
 

Lesen sie die antworten

#1 Beverly
20/04/2009 - 08:33 | Warnen spam
Hi Steffen,

laufe in einer Schleife über alle Textelder und prüfe, ob die
.TopLeftCell.Address identisch mit der Adresse von ActiveCell.Offset(1,
0).Address ist - wenn ja, dann löschen:

Sub TextfeldLoeschen()
Dim tbElement As TextBox
For Each tbElement In ActiveSheet.TextBoxes
If tbElement.TopLeftCell.Address = ActiveCell.Offset(1, 0).Address
Then tbElement.Delete
Next tbElement
End Sub

Bis spàter,
Karin
http://beverly.excelhost.de/



"Willy Steffen" wrote:

Guten Tag Alle
Ich möchte gerne eine Textbox löschen, die an einer definierten Zelle
"ActiveCell" mit .top .left etc positioniert wurde. Ich sollte diese gezielt
löschen können. Jetzt habe ich es auf Umwegen geschafft, indem ich den
Textboxname in eine Public Variable speichere und diese dann lösche. Kann mir
da jemand helfen?
Ich danke bereits für etwelche Bemühungen im Voraus
Willy

Hier den Code:
Die Kommentare werden in der 2te Zeile von einem anderen Makro eingetragen
und an die active Zelle soll der Text in ein Textfeld geschrieben werden.
Manchmal gibt es mehrere Zeilen die Nacheinander in den Kommentar geschrieben
werden. Bei jeder Zeile wird dann eine Textbox erstellt und legt diese
übereinander. Dies stört mich und möchte jeweils die Untere löschen.
Option Explicit
Public TXTbName As String

Sub Textfeld1()
Dim X As Object
Dim AktZelle As Range
Dim txtBox As Shape, TXTBoxName
Dim ZellTXT As String, Nom
Dim Spalte As Long, Zeile
'Kommentar holen
Spalte = ActiveCell.Column
Zeile = ActiveCell.Row
ZellTXT = Cells(2, Spalte).Comment.Text
'Textbox an Zellen positionieren
Set AktZelle = Cells(Zeile, Spalte)
'TXTboxbreite bestimmen
Set X = Columns(Spalte)
'Textboxvariablen setzten
Set txtBox = Worksheets(1).Shapes.AddTextbox( _
msoTextOrientationUpward, AktZelle.Left, AktZelle.Top + 15, _
X.Width - 1, 105)
'Textfeld setzen und TXTboxname speichern
With txtBox.TextFrame.Characters
.Text = ZellTXT
.Font.Name = "Arial"
.Font.Size = 8
.Font.Background = xlBackgroundAutomatic ' xlBackgroundTransparent
TXTBoxName = .Parent.Name
End With
ActiveSheet.Shapes(TXTBoxName).Select
TXTbName = TXTBoxName 'Public Variable
Debug.Print TXTBoxName
'Text ausrichten
With Selection
.HorizontalAlignment = xlLeft 'xlRight
.VerticalAlignment = xlVAlignBottom 'xlVAlignBottomCenter
End With
'Formatierung der TXTbox
Selection.ShapeRange.Line.Visible = msoFalse
Selection.ShapeRange.TextFrame.MarginLeft = 0#
Selection.ShapeRange.TextFrame.MarginRight = 0#
Selection.ShapeRange.TextFrame.MarginTop = 0#
Selection.ShapeRange.TextFrame.MarginBottom = 0#
'Vorherige Zelle wieder aktivieren
Cells(Zeile, Spalte).Activate
End Sub

Sub Textfeld2()
Dim X As Object
Dim AktZelle As Range
Dim txtBox As Shape, TXTBoxName
Dim ZellTXT As String, Nom
Dim Spalte As Long, Zeile

'Abfragen ob Variable TXTbName leer ist
If TXTbName = "" Then Call Textfeld1
'Löschen der Textbox
ActiveSheet.Shapes(TXTbName).Delete
'Kommentar holen
Spalte = ActiveCell.Column
Zeile = ActiveCell.Row
ZellTXT = Cells(2, Spalte).Comment.Text
'Textbox an Zellen positionieren
Set AktZelle = Cells(Zeile, Spalte)
'TXTboxbreite bestimmen
Set X = Columns(Spalte)
'Textboxvariablen setzten
Set txtBox = Worksheets(1).Shapes.AddTextbox( _
msoTextOrientationUpward, AktZelle.Left, AktZelle.Top + 15, _
X.Width - 1, 105)
'Textfeld setzen und TXTboxname speichern
With txtBox.TextFrame.Characters
.Text = ZellTXT
.Font.Name = "Arial"
.Font.Size = 8
.Font.Background = xlBackgroundAutomatic ' xlBackgroundTransparent
TXTBoxName = .Parent.Name
End With
ActiveSheet.Shapes(TXTBoxName).Select
TXTbName = TXTBoxName
Debug.Print TXTBoxName
'Text ausrichten
With Selection
.HorizontalAlignment = xlLeft 'xlRight
.VerticalAlignment = xlVAlignBottom 'xlVAlignBottomCenter
End With
'Formatierung der TXTbox
Selection.ShapeRange.Line.Visible = msoFalse
Selection.ShapeRange.TextFrame.MarginLeft = 0#
Selection.ShapeRange.TextFrame.MarginRight = 0#
Selection.ShapeRange.TextFrame.MarginTop = 0#
Selection.ShapeRange.TextFrame.MarginBottom = 0#
'Vorherige Zelle wieder aktivieren
Cells(Zeile, Spalte).Activate
End Sub

Ähnliche fragen