Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1308to1312
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
Wert Textbox in Zelle aktualisieren
23.04.2013 11:11:08
Sergej
Hallo, ich habe mir mittels Excel VBA einen Hierarchiebaum mit Textboxen erstellt, über einen Startbutton leitet der Benurtzer eine Befragung ein. Dabei wird der Benutzer mit MSgBoxen befragt und seine antwort durch Eingabe in Inputboxen in Textboxen geschrieben wird. Der Inhalt der Inputboxen wird einer Variable übergeben und weiter an die Textboxen , diese Variable wird dann später in eine Zelle geschrieben. Mein Problem:
Wenn ich später den Inhalt einer Textbox ändern möchte, ändert sich natürlich der Wert in der entsprechenden Zelle nicht mit. Wie könnte ich dieses Problem meisten, sodass der Wert einer Textbox auch beim ändern immer in die entsprechende Zelle übertragen wird. Man weiß in Voraus aber nicht wieviele Textboxen und welche Hierarchie zustande kommt. Vielen Danke für eure hilfe im Voraus

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

Betreff
Datum
Anwender
Anzeige
Zeig mal deinen Code! (owT)
23.04.2013 11:17:13
EtoPHG

AW: Zeig mal deinen Code! (owT)
23.04.2013 11:43:05
Sergej
'klassenvariablen Produkt1
Dim PZCounter As Integer
Dim MCounter As Integer
Dim BTCounter As Integer
Dim LastBTPosition As Integer
Dim i As Integer
Dim p As Integer
Dim y As Integer ' für bauteilnamen bei materialen
Dim yy As Integer ' für bauteilnamen bei materialen
Dim x As Integer ' für bauteilnamen bei prozessen
Dim xx As Integer ' für bauteilnamen bei prozessen
End Sub
Private Sub ProduktHinzufügen_Click()
MCounter = -1 'Material zähler
PZCounter = -1 'prozesszähler
BTCounter = -1 'Bauteilenzähler
LastBTPosition = 0 'Für form
i = 8 'für material
p = 8 'für prozesse
y = 7 ' für Bauteilnamen bei Materialien
yy = 0 ' für Bauteilnamen bei Materialien
xx = 0 ' für Bauteilnamen bei Prozessen
x = -5 'für Bauteilnamen bei Prozessen
Dim strProduktEingabe As String
Dim posX As Integer
Dim posY As Integer
posX = 500
posY = 50
strProduktEingabe = InputBox("Bitte geben Sie ein Produkt ein", "Produkt eingeben", , 0, 0)
If strProduktEingabe = "" Or strProduktEingabe = "Falsch" Then Exit Sub
Tabelle1.Shapes.AddTextbox(msoTextOrientationHorizontal, posX, posY, 100, 30).Select
Selection.ShapeRange.TextFrame.Characters.Text = strProduktEingabe
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(190, 0, 255)
End With
Tabelle1.Activate
posX = -20 'für start der Baugruppen bei position 100
Call BaugruppeHinzufügen(posX, posY)
End Sub

Private Sub BaugruppeHinzufügen(ByVal posX As Integer, ByVal posY As Integer)
Dim posX_BG As Integer
posX_BG = posX + 120
Dim BG As String
BG = InputBox("Bitte geben Sie eine Baugruppe ein: ", "Baugruppe", , 0, 0)
If BG = "" Or BG = "Falsch" Then Exit Sub
Tabelle1.Shapes.AddTextbox(msoTextOrientationHorizontal, posX_BG, posY + 50, 100, 30).Select
Selection.ShapeRange.TextFrame.Characters.Text = BG
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(100, 200, 0)
End With
Tabelle1.Activate
If BTCounter >= 0 Then
posX = posX_BG - 120
Else
posX = -20
End If
Call BauteilHinzufügen(posX, posY)
Call BaugruppeMsgBox(posX_BG, posY)
End Sub

Private Sub BauteilHinzufügen(ByVal posX As Integer, ByVal posY As Integer)
BTCounter = BTCounter + 1
Dim BT As String
Dim posX_BT As Integer
posX_BT = posX + 120
BT = InputBox("Bitte geben Sie ein Bauteil ein: ", "Bauteil", , 0, 0)
If BT = "" Or BT = "Falsch" Then Exit Sub
Tabelle1.Shapes.AddTextbox(msoTextOrientationHorizontal, posX_BT, posY + 100, 100, 30).Select
Selection.ShapeRange.TextFrame.Characters.Text = BT
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 255, 0)
End With
Tabelle1.Activate
If yy = 1 Or yy = 0 Then
y = y + 1
Else
y = y + 2
End If
yy = 0
Tabelle2.Cells(y, 1) = BT
If xx = 1 Or xx = 0 Then
x = x + 13
ElseIf xx = 2 Then
x = x + 2 * 13
ElseIf xx = 3 Then
x = x + 3 * 13
ElseIf xx = 4 Then
x = x + 4 * 13
ElseIf xx = 5 Then
x = x + 5 * 13
ElseIf xx = 6 Then
x = x + 6 * 13
ElseIf xx = 7 Then
x = x + 7 * 13
ElseIf xx = 8 Then
x = x + 8 * 13
ElseIf xx = 9 Then
x = x + 9 * 13
Else
x = x + 10 * 13
End If
xx = 0
Tabelle3.Cells(x, 1) = BT
MCounter = -1
Call MaterialHinzufügen(posX_BT, posY)
LastBTPosition = posX_BT
Call BauteilMsgBox(posX_BT, posY)
End Sub
Private Sub ProzessHinzufügen(ByVal posX As Integer, ByVal posY As Integer)
PZCounter = PZCounter + 1
Dim PZ As String
PZ = InputBox("Bitte geben Sie ein Prozess ein: ", "Prozess", , 0, 0)
If PZ = "" Or PZ = "Falsch" Then Exit Sub
Tabelle1.Shapes.AddTextbox(msoTextOrientationHorizontal, posX, posY + 40 + PZCounter * 40, 100,  _
30).Select
Selection.ShapeRange.TextFrame.Characters.Text = PZ
Tabelle3.Cells(p, 3) = PZ
p = p + 13
xx = xx + 1
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(100, 200, 255)
End With
Tabelle1.Activate
Call ProzessMsgBox(posX, posY)
End Sub
Private Sub ProzessMsgBox(ByVal posX As Integer, ByVal posY As Integer)
Dim intMsg As Integer
intMsg = MsgBox("Wollen Sie einen weiteren Prozess eingeben? ", vbYesNo)
If intMsg = vbYes Then
Call ProzessHinzufügen(posX, posY)
End If
End Sub
Private Sub MaterialHinzufügen(ByVal posX As Integer, ByVal posY As Integer)
MCounter = MCounter + 1
Dim M As String
M = InputBox("Bitte geben Sie ein Material ein: ", "Material", , 0, 0)
If M = "" Or M = "Falsch" Then Exit Sub
Tabelle1.Shapes.AddTextbox(msoTextOrientationHorizontal, posX, posY + 150 + MCounter * 40, 100,  _
30).Select
Selection.ShapeRange.TextFrame.Characters.Text = M
Tabelle2.Cells(i, 2) = M
i = i + 1
yy = yy + 1
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 150, 0)
End With
Tabelle1.Activate
If MCounter = 1 Then
Exit Sub
Else
Call MaterialMsgBox(posX, posY)
End If
Call ProzessHinzufügen(posX, posY + 200)
End Sub

Private Sub MaterialMsgBox(ByVal posX As Integer, ByVal posY As Integer)
Dim intMsg As Integer
intMsg = MsgBox("Wollen Sie dem Bauteil ein weiteres Material zuordnen? ", vbYesNo)
If intMsg = vbYes Then
Call MaterialHinzufügen(posX, posY)
End If
End Sub
Private Sub BauteilMsgBox(ByVal posX As Integer, ByVal posY As Integer)
Dim intMsg As Integer
intMsg = MsgBox("Wollen Sie einen weiteres Bauteil eingeben? ", vbYesNo)
If intMsg = vbYes Then
PZCounter = -1
Call BauteilHinzufügen(posX, posY)
End If
End Sub

Private Sub BaugruppeMsgBox(ByVal posX As Integer, ByVal posY As Integer)
Dim intMsg As Integer
intMsg = MsgBox("Wollen Sie eine weitere Baugruppe eingeben? ", vbYesNo)
If intMsg = vbYes Then
PZCounter = -1
If posX 

Anzeige
AW: Wert Textbox in Zelle aktualisieren
23.04.2013 11:39:19
Sergej
Anbei mein Code, ist leider etwas arg lang... soll ich veruschen ein einfacheres Beispiel zu machen?
'klassenvariablen Produkt1
Dim PZCounter As Integer
Dim MCounter As Integer
Dim BTCounter As Integer
Dim LastBTPosition As Integer
Dim i As Integer
Dim p As Integer
Dim y As Integer ' für bauteilnamen bei materialen
Dim yy As Integer ' für bauteilnamen bei materialen
Dim x As Integer ' für bauteilnamen bei prozessen
Dim xx As Integer ' für bauteilnamen bei prozessen
End Sub
Private Sub ProduktHinzufügen_Click()
MCounter = -1 'Material zähler
PZCounter = -1 'prozesszähler
BTCounter = -1 'Bauteilenzähler
LastBTPosition = 0 'Für form
i = 8 'für material
p = 8 'für prozesse
y = 7 ' für Bauteilnamen bei Materialien
yy = 0 ' für Bauteilnamen bei Materialien
xx = 0 ' für Bauteilnamen bei Prozessen
x = -5 'für Bauteilnamen bei Prozessen
Dim strProduktEingabe As String
Dim posX As Integer
Dim posY As Integer
posX = 500
posY = 50
strProduktEingabe = InputBox("Bitte geben Sie ein Produkt ein", "Produkt eingeben", , 0, 0)
If strProduktEingabe = "" Or strProduktEingabe = "Falsch" Then Exit Sub
Tabelle1.Shapes.AddTextbox(msoTextOrientationHorizontal, posX, posY, 100, 30).Select
Selection.ShapeRange.TextFrame.Characters.Text = strProduktEingabe
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(190, 0, 255)
End With
Tabelle1.Activate
posX = -20 'für start der Baugruppen bei position 100
Call BaugruppeHinzufügen(posX, posY)
End Sub

Private Sub BaugruppeHinzufügen(ByVal posX As Integer, ByVal posY As Integer)
Dim posX_BG As Integer
posX_BG = posX + 120
Dim BG As String
BG = InputBox("Bitte geben Sie eine Baugruppe ein: ", "Baugruppe", , 0, 0)
If BG = "" Or BG = "Falsch" Then Exit Sub
Tabelle1.Shapes.AddTextbox(msoTextOrientationHorizontal, posX_BG, posY + 50, 100, 30).Select
Selection.ShapeRange.TextFrame.Characters.Text = BG
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(100, 200, 0)
End With
Tabelle1.Activate
If BTCounter >= 0 Then
posX = posX_BG - 120
Else
posX = -20
End If
Call BauteilHinzufügen(posX, posY)
Call BaugruppeMsgBox(posX_BG, posY)
End Sub

Private Sub BauteilHinzufügen(ByVal posX As Integer, ByVal posY As Integer)
BTCounter = BTCounter + 1
Dim BT As String
Dim posX_BT As Integer
posX_BT = posX + 120
BT = InputBox("Bitte geben Sie ein Bauteil ein: ", "Bauteil", , 0, 0)
If BT = "" Or BT = "Falsch" Then Exit Sub
Tabelle1.Shapes.AddTextbox(msoTextOrientationHorizontal, posX_BT, posY + 100, 100, 30).Select
Selection.ShapeRange.TextFrame.Characters.Text = BT
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 255, 0)
End With
Tabelle1.Activate
If yy = 1 Or yy = 0 Then
y = y + 1
Else
y = y + 2
End If
yy = 0
Tabelle2.Cells(y, 1) = BT
If xx = 1 Or xx = 0 Then
x = x + 13
ElseIf xx = 2 Then
x = x + 2 * 13
ElseIf xx = 3 Then
x = x + 3 * 13
ElseIf xx = 4 Then
x = x + 4 * 13
ElseIf xx = 5 Then
x = x + 5 * 13
ElseIf xx = 6 Then
x = x + 6 * 13
ElseIf xx = 7 Then
x = x + 7 * 13
ElseIf xx = 8 Then
x = x + 8 * 13
ElseIf xx = 9 Then
x = x + 9 * 13
Else
x = x + 10 * 13
End If
xx = 0
Tabelle3.Cells(x, 1) = BT
MCounter = -1
Call MaterialHinzufügen(posX_BT, posY)
LastBTPosition = posX_BT
Call BauteilMsgBox(posX_BT, posY)
End Sub
Private Sub ProzessHinzufügen(ByVal posX As Integer, ByVal posY As Integer)
PZCounter = PZCounter + 1
Dim PZ As String
PZ = InputBox("Bitte geben Sie ein Prozess ein: ", "Prozess", , 0, 0)
If PZ = "" Or PZ = "Falsch" Then Exit Sub
Tabelle1.Shapes.AddTextbox(msoTextOrientationHorizontal, posX, posY + 40 + PZCounter * 40, 100,  _
30).Select
Selection.ShapeRange.TextFrame.Characters.Text = PZ
Tabelle3.Cells(p, 3) = PZ
p = p + 13
xx = xx + 1
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(100, 200, 255)
End With
Tabelle1.Activate
Call ProzessMsgBox(posX, posY)
End Sub
Private Sub ProzessMsgBox(ByVal posX As Integer, ByVal posY As Integer)
Dim intMsg As Integer
intMsg = MsgBox("Wollen Sie einen weiteren Prozess eingeben? ", vbYesNo)
If intMsg = vbYes Then
Call ProzessHinzufügen(posX, posY)
End If
End Sub
Private Sub MaterialHinzufügen(ByVal posX As Integer, ByVal posY As Integer)
MCounter = MCounter + 1
Dim M As String
M = InputBox("Bitte geben Sie ein Material ein: ", "Material", , 0, 0)
If M = "" Or M = "Falsch" Then Exit Sub
Tabelle1.Shapes.AddTextbox(msoTextOrientationHorizontal, posX, posY + 150 + MCounter * 40, 100,  _
30).Select
Selection.ShapeRange.TextFrame.Characters.Text = M
Tabelle2.Cells(i, 2) = M
i = i + 1
yy = yy + 1
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 150, 0)
End With
Tabelle1.Activate
If MCounter = 1 Then
Exit Sub
Else
Call MaterialMsgBox(posX, posY)
End If
Call ProzessHinzufügen(posX, posY + 200)
End Sub

Private Sub MaterialMsgBox(ByVal posX As Integer, ByVal posY As Integer)
Dim intMsg As Integer
intMsg = MsgBox("Wollen Sie dem Bauteil ein weiteres Material zuordnen? ", vbYesNo)
If intMsg = vbYes Then
Call MaterialHinzufügen(posX, posY)
End If
End Sub
Private Sub BauteilMsgBox(ByVal posX As Integer, ByVal posY As Integer)
Dim intMsg As Integer
intMsg = MsgBox("Wollen Sie einen weiteres Bauteil eingeben? ", vbYesNo)
If intMsg = vbYes Then
PZCounter = -1
Call BauteilHinzufügen(posX, posY)
End If
End Sub

Private Sub BaugruppeMsgBox(ByVal posX As Integer, ByVal posY As Integer)
Dim intMsg As Integer
intMsg = MsgBox("Wollen Sie eine weitere Baugruppe eingeben? ", vbYesNo)
If intMsg = vbYes Then
PZCounter = -1
If posX 

Anzeige
AW: Wert Textbox in Zelle aktualisieren
23.04.2013 11:57:24
Sergej
Hallo, ich habe mir mittels Excel VBA einen Hierarchiebaum mit Textboxen erstellt, über einen Startbutton leitet der Benurtzer eine Befragung ein. Dabei wird der Benutzer mit MSgBoxen befragt und seine antwort durch Eingabe in Inputboxen in Textboxen geschrieben wird. Der Inhalt der Inputboxen wird einer Variable übergeben und weiter an die Textboxen , diese Variable wird dann später in eine Zelle geschrieben. Mein Problem:
Wenn ich später den Inhalt einer Textbox ändern möchte, ändert sich natürlich der Wert in der entsprechenden Zelle nicht mit. Wie könnte ich dieses Problem meisten, sodass der Wert einer Textbox auch beim ändern immer in die entsprechende Zelle übertragen wird. Man weiß in Voraus aber nicht wieviele Textboxen und welche Hierarchie zustande kommt. Vielen Danke für eure hilfe im Voraus, anbei ein Beispiel und der Code...bitte um Hilfe
https://www.herber.de/bbs/user/85009.xlsx
Dim p As Integer

Private Sub Start_Click()
Dim posX As Integer
Dim posY As Integer
posX = 100
posY = 100
p = 10
Call ProzessHinzufügen(posX, posY)
End Sub


Private Sub ProzessHinzufügen(ByVal posX As Integer, ByVal posY As Integer)
Dim PZ As String
PZ = InputBox("Bitte geben Sie ein Prozess ein: ", "Prozess", , 0, 0)
If PZ = "" Or PZ = "Falsch" Then Exit Sub
Tabelle1.Shapes.AddTextbox(msoTextOrientationHorizontal, posX, posY, 100, 30).Select
Selection.ShapeRange.TextFrame.Characters.Text = PZ
posY = posY + 40
Tabelle1.Cells(p, 10) = PZ
p = p + 1
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(100, 200, 255)
End With
Tabelle1.Activate
Call ProzessMsgBox(posX, posY)
End Sub


Private Sub ProzessMsgBox(ByVal posX As Integer, ByVal posY As Integer)
Dim intMsg As Integer
intMsg = MsgBox("Wollen Sie einen weiteren Prozess eingeben? ", vbYesNo)
If intMsg = vbYes Then
Call ProzessHinzufügen(posX, posY)
End If
End Sub

Anzeige
dreifach
23.04.2013 11:58:38
Klaus
Hallo SergeJ,
ich weiss nicht was du machst, aber: du machst es falsch.
Grüße,
Klaus M.vdT.

348 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige