vielleicht weiß hier jemand eine Bessere Lösung bzw. zum wieder Löschen eine funktionierende!
wäre toll =)
hier werden Textboxen für jeden Wert eines Bereichs erstellt:
Modul:
Sub AddTextbox(Stelle As Range)
Dim Objekt As OLEObject
Dim TB As MSForms.TEXTBOX
With ActiveSheet
Set Objekt = .OLEObjects.Add(ClassType:="Forms.TextBox.1", Left:=Stelle.Left, _
Top:=Stelle.Top, Width:=Stelle.Width, Height:=Stelle.Height)
Set TB = Objekt.Object
With TB
.Name = "ODMVolumeBox" & ActiveSheet.OLEObjects.Count
End With
End With
End Sub
Aufruf im Hauptsheet:
For Each cell In Range("ODMListB")
If cell.Value "" Then
AddTextbox cell.Offset(2, 0)
End If
Next
Funktioniert auch soweit, nur werden ja bei ausführen des Makros die generierten Textboxen immer wieder überschrieben!
Diese möchte ich zuvor wieder löschen, da sich später auch die Werte/ Inhalte in den Textboxen fortlaufend ändern.
zum Löschen habe ich mir bis jetzt folgendes überlegt, nur leider bin ich noch VBA-Anfänger und habe irgendwo den Wurm drin und sehe/finde ihn nicht =(
Für andere Vorschläge und Erklärungen wäre ich sehr dankbar =)
lg
adrian
Modul:
Sub DeleteTextBox(Bereich As Range)
Dim TB As MSForms.TEXTBOX
Dim Objekt As OLEObject
Dim Anzahl As Integer, Pos As Integer, Zaehler As Integer
Anzahl = Bereich.Cells.Count
For Zaehler = 0 To Anzahl - 1
With ActiveSheet
Pos = .OLEObjects.Count - Zaehler
For Each Objekt In .OLEObjects
If Objekt.Name = "ODMVolumeBox" & Pos Then
Objekt.Delete
End If
Next
End With
Next
End Sub
Aufruf im HS:
DeleteTextBox Bereich:=Worksheets("overview").Range("ODMListB")