Microsoft Excel

Herbers Excel/VBA-Archiv

Inhalt aus TextFeld speichern vorm löschen


Betrifft: Inhalt aus TextFeld speichern vorm löschen
von: Fred
Geschrieben am: 28.11.2018 20:28:10

Hallo zusammen

ich habe da mal wieder eine Frage wo ich nicht weiter komme.
Mit dem unten stehenden Code erzeuge ich Ein TextFeld und wenn ich dieses nicht mehr benötige lösche ich es wieder was auch funktioniert, Eigendlich wollte ich noch vor dem Löschen des TextFeldes den Inhalt in die tabelle doku in die erste freie zelle in reihe B eintragen aber das funktioniert irgendwie nicht. fehler werden aber auch nicht angezeigt. Weiss jemand Hilfe.

Sub Nr_1()
   Dim rngTopLeft As Range, rngBottomRight As Range
   Dim dblTop#, dblLeft#, dblHeight#, dblWidth#
   Dim myTextBox As TextBox
   
   Set rngTopLeft = Range("A59")
   dblTop = rngTopLeft.Top
   dblLeft = rngTopLeft.Left
   
   Set rngBottomRight = Range("A63")
   dblHeight = rngBottomRight.Top + rngBottomRight.Height - dblTop
   dblWidth = rngBottomRight.Left + rngBottomRight.Width - dblLeft
   
   Set myTextBox = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
      dblLeft, dblTop, dblWidth, dblHeight).OLEFormat.Object
    myTextBox.Name = "myboxer_1"
    myTextBox.Characters.Text = " Info - "
    'myTextBox.ShapeRange.Fill.ForeColor.SchemeColor = 1
    myTextBox.ShapeRange.Fill.ForeColor.RGB = RGB(252, 252, 252)
    myTextBox.ShapeRange.Fill.OneColorGradient msoGradientHorizontal, 2, 0.45
    myTextBox.Characters.Text = " Info - "
    With myTextBox.Characters(Start:=1, Length:=7).Font
    .Name = "Arial"
    .FontStyle = "Standart"
    .Size = 14
    .ColorIndex = 11
    End With
    
End Sub

Sub loesche_1()
    Dim intErstLeereZeile As Long
    Dim letzteZeile As Long
    Dim myTextBox As TextBox
    Set myTextBox = myboxer_1
    Dim objDataObject As DataObject
    Set objDataObject = New DataObject
    objDataObject.SetText myboxer_1.Text
    objDataObject.PutInClipboard
       
    intErsteLeereZeile = Sheets("Doku").Cells(Rows.Count, 2).End(xlUp).Row + 1
    Sheets("Doku").Cells(intErsteLeereZeile, 2).Value = myboxer_1.Text.Value
    Set objDataObject = Nothing
    ActiveSheet.Shapes("myboxer_1").Delete
End Sub
Grüße Fred

  

Betrifft: AW: Inhalt aus TextFeld speichern vorm löschen
von: onur
Geschrieben am: 28.11.2018 20:57:11

Nix für Ungut, aber wer hat dir diesen Müll programmiert? :)
Total aufgebläht und mit völlig überflüsigem Zeug durchsetzt.

Public myTextBox As TextBox
Sub Nr_1()
Dim rngTopLeft As Range, rngBottomRight As Range
   Dim dblTop#, dblLeft#, dblHeight#, dblWidth#
   'Dim myTextBox As TextBox
   Set rngTopLeft = Range("A59")
   dblTop = rngTopLeft.Top
   dblLeft = rngTopLeft.Left
   Set rngBottomRight = Range("A63")
   dblHeight = rngBottomRight.Top + rngBottomRight.Height - dblTop
   dblWidth = rngBottomRight.Left + rngBottomRight.Width - dblLeft
   Set myTextBox = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
      dblLeft, dblTop, dblWidth, dblHeight).OLEFormat.Object
    myTextBox.Name = "myboxer_1"
    myTextBox.Characters.Text = " Info - "
    'myTextBox.ShapeRange.Fill.ForeColor.SchemeColor = 1
    myTextBox.ShapeRange.Fill.ForeColor.RGB = RGB(252, 252, 252)
    myTextBox.ShapeRange.Fill.OneColorGradient msoGradientHorizontal, 2, 0.45
    myTextBox.Characters.Text = " Info - "
    With myTextBox.Characters(Start:=1, Length:=7).Font
    .Name = "Arial"
    .FontStyle = "Standart"
    .Size = 14
    .ColorIndex = 11
    End With
End Sub

Sub loesche_1()
  Dim intErsteLeereZeile As Long
 Dim x, y
    Dim letzteZeile As Long
    'Dim myTextBox As TextBox
    'Set myTextBox = myboxer_1
    'Dim objDataObject As DataObject
    'Set objDataObject = New DataObject
    'objDataObject.SetText myTextBox.Text
    'objDataObject.PutInClipboard
    x = Sheets("Doku").Cells(Rows.Count, 2).End(xlUp).Row
    y = myTextBox.Text
    intErsteLeereZeile = Sheets("Doku").Cells(Rows.Count, 2).End(xlUp).Row + 1
    Sheets("Doku").Cells(intErsteLeereZeile, 2).Value = myTextBox.Text
    'Set objDataObject = Nothing
    ActiveSheet.Shapes("myboxer_1").Delete
End Sub



  

Betrifft: AW: Inhalt aus TextFeld speichern vorm löschen
von: onur
Geschrieben am: 28.11.2018 21:04:19

Hier mit Testdatei - ich hatte auch noch Müll von mir hinterlassen.
http://www.herber.de/bbs/user/125741.xlsm


  

Betrifft: AW: Inhalt aus TextFeld speichern vorm löschen
von: Fred
Geschrieben am: 28.11.2018 21:08:33

Hallo onur

Vielen dank für deine Antwort. leider bin ich dabei mir das irgend wie selber beizubringen, da kommt dann leider meistens nur Müll raus.
Deine datei kann ich leider nicht benutzen ich arbeite mit office 2003 (xls)

grüße Fred


  

Betrifft: AW: Inhalt aus TextFeld speichern vorm löschen
von: onur
Geschrieben am: 28.11.2018 21:14:31

Kein Problem, du darfst nur nicht so kompliziert denken.
Und du solltest vielleicht etwas kürzere Variablennamen benutzen, der Code wird wesentlich lesbarer (z.B. statt intErsteLeereZeile eLZ) .
Wie gesagt, nicht persönlich nehmen!
http://www.herber.de/bbs/user/125744.xls


  

Betrifft: AW: Inhalt aus TextFeld speichern vorm löschen
von: Fred
Geschrieben am: 28.11.2018 21:55:29

Hallo onur

kein Problem ich nehme das nicht persönlich.
Also in deiner Datei funktioniert der Code bei mir in meiner Tabelle leider nicht.

Ich lade mal meine Tabelle hoch .

Geht leider nur als Zip sonst ist die zu groß

http://www.herber.de/bbs/user/125746.zip


  

Betrifft: AW: Inhalt aus TextFeld speichern vorm löschen
von: onur
Geschrieben am: 28.11.2018 22:04:16

Ich sehe hier kein button "löschen".


  

Betrifft: AW: Inhalt aus TextFeld speichern vorm löschen
von: Fred
Geschrieben am: 28.11.2018 22:13:05

das sind die 12 Buttons neben den Textfeldern. (klean)

grüße Fred


  

Betrifft: AW: Inhalt aus TextFeld speichern vorm löschen
von: onur
Geschrieben am: 28.11.2018 22:18:30

Die rufen nur
Sub Nr_1(), aber nicht
Sub loesche_1()


  

Betrifft: AW: Inhalt aus TextFeld speichern vorm löschen
von: Fred
Geschrieben am: 28.11.2018 22:40:44

Hallo onur

joo hast Recht habe ich auch gerade gesehen .Und schon ist das nächste Problem da wenn ich den Code dann so ausführe kommt sofort der Fehler Kein objekt. Objekt erforderlich . es heissen ja alle 12 Textfelder gleich und beim löschen kann ich so ja gar nicht myboxer_1 ansprechen weil ich nicht weiss welche es genau ist. Na toll und schon rückt die lösung in weite ferne.

Grüße Fred