will eigentlich nur einen Text aus einer Excel-Tabelle in einer Textbox dauerhaft darstellen in VBA.
Anders ich habe diversen Tabellen in Excel und will eine Umfrage in VBA programmieren.
D.h. ich will mehrer Textfelder erschaffen, wo die Inhalte aus einer ganz bestimmten Zelle aus excel erscheint.
Wow das war jetzt aber mal ne‘ schnelle Antwort….
Also vorab erst mal danke und ich bin ein absoluter VBA-Anfänger, benötige es für die Uni, da wir dort zum ersten Mal ein VBA-Projekt in Verbindung mit Excel/Word/Powerpoint etc. erstellen sollen.
d.h. gar keine Ahnung von VBA.
So nun zu dem Problem was sich für mich als Leihe im Kopf sehr einfach anhört, aber an der Umsetzung in VBA scheitert es…..
Also wir haben in Excel vier Tabellen erstellt:
Tabelle: Excel Formblatt, mit einer Zufallsfunktion, wo zehn Kategorien gewählt sind und zu jeder Kategorie jeweils drei Fragen existieren, welche per Zufall ausgewählt werden sollen
Also es befindet sich in der Zelle B7 die erste Frage.
Nun will ich in VBA einen Code schreiben, welcher mir in einem Textfeld genau diese Frage anzeigt, wenn ich VBA starte….in einem UserForm!
Dieses soll insgesamt zehn mal enstehen….Textfeld, wo jeweils die Zellen aus der ersten Tabelle angezeigt werden….
Von Tabelle1 soll im ersten Textfeld der Inhalt der Zelle B7 angezeigt werden!
Von Tabelle1 soll im zweiten Textfeld der Inhalt der Zelle B9 angezeigt werden!
…….Tabelle1……………dritten Textfeld…………………….Zelle B11………….
……..Tabelle1…………..vierten Textfeld……………………Zelle B13…………
.
.
.
.
…….Tabelle 1……….zehnten Textfeld…………………..Zelle B25………
Dies ist gerade unser Hauptproblem, da er zwar einige Codes als richtig in VBA erkennt, aber das Textfeld weiterhin leer bleibt.
Zur Auswertung sollen dann einzelne Optionsfelder neben dem Textfeld erscheinen, welchen jeweils eine Wertigkeit zwischen 1-6 zugeordnet wird und diese dann wiederrum zur auswertung in die Tabelle 2 erscheinen soll, um im excel am Ende eine Auswertung mit Hilfe von Balkendiagrammen entstehen soll.
Da wir aber gerade nicht bei den Punkt „Befüllen der Textboxen“ mit den Inhalten aus den Zellen B7 etc. weiterkommen, stellen sich da bestimmt noch weitere Probleme ein.
Als Beispiel, könnte ich auch die Excel Tabelle bei Bedarf versenden.
Vielen Dank für die schnelle Hilfe….
Beste Grüße
Anders ich habe diversen Tabellen in Excel und will eine
Umfrage in VBA programmieren.
D.h. ich will mehrer Textfelder erschaffen, wo die Inhalte aus
einer ganz bestimmten Zelle aus excel erscheint.
Ja Wolfram,
Da liegt ja das Problem, habe ja nich nicht viel in VBA zustande bekommen, deswegen ja auch diese Fragestellung hier im Forum, habe aber das Problem teilweise lösen können mit Hilfe dieses Forums!!!
zum schreiben eines strings in eine textbox weisst man disen string der Text-Eigenschaft der textbox (beim label ist es caption)
s.u. Me.TextBox.Text = …
hier Me - Userform (kann auch weggelassen werden)
TextBox - ein Element aus der Toolbox (VBA Editor -> Menü -> Vied -> Toolbox)
zum Lesen der daten in der Tabelle gibt es mehrere Möglichkeiten:Cells-Objekt, Range-Objekt und andere
mit Range gibt man di ‚Volle‘ Adresse der Zelle
mit Cells die Matrixelement (Zeilenindex zuerst)
Private Sub UserForm\_Activate()
'Me.TextBox1.Text = Sheet1.Range("B11").Value
Me.TextBox1.Text = Sheet1.Cells(11, 2).Value
End Sub
Für die Generierung Pseudozufallszahlen gibt es Rnd-Funktion (zur ‚Veresserung‘ der Zufallszahlen gibt es Randomize)
ein paar Grußformeln hätten deiner Anfrage gut zu Gesicht gestanden.
will eigentlich nur einen Text aus einer Excel-Tabelle in
einer Textbox dauerhaft darstellen in VBA.
Was heißt bei dir „unter VBA“? Textbox in einem Userform?
Das relativ einfach möglich. Textfeld in Tabelle:
Erstelle das Textfeld (ohne Text-Inhalt)
Selektiere das Textfeld (falls erforderlich) per Mausklick.
Füge in der Bearbeitungszeile eine Formel mit dem Bezug zur gewünschten Zelle ein. z.B.: =Tabelle2!C5
Textfeld in Userform:
Erstelle das Textfeld (ohne Text-Inhalt)
Selektiere das Textfeld (falls erforderlich) per Mausklick.
Füge unter Eigenschaften-Controlsource den Bezug zur gewünschten Zelle ein. z.B.: =‚Tabelle 2‘!C5
Textfeld in Userform per VBA Quelle zuweisen:
Private Sub UserForm\_Initialize()
'entweder so - erlaubt variables Zuordnen
Dim wks As Worksheet, Zelle As Range, a%
Set wks = Worksheets("Tabelle 2") 'Tabelle auf die Bezeug genommen wird
a = wks.Cells(4, 3).Value
Select Case a
Case 1 To 2: Set Zelle = wks.Cells(5, 3) 'oder =wks.Range("C5")
Case 3 To 5: Set Zelle = wks.Cells(6, 3)
Case Else
Set Zelle = wks.Cells(7, 3)
End Select
'Me = Useform in dem Textbox angelegt wurde
Me.TextBox1.ControlSource = "='" & wks.Name & "'!" & Zelle.Address(ReferenceStyle:=xlA1)
'oder so - fix
Me.Controls("TextBox1").ControlSource = "='Tabelle 2'!$C$5"
'oder so - fix
TextBox1.ControlSource = "='Tabelle 2'!$C$5"
End Sub
vorab einen Tipp wo man viele gute Anregungen finden kann! www.herber.de
Ich würde folgender Maßen vorgehen: Mit welchem Befehl kannst du den Text in der Textbox beeinflussen. Wenn Du diesen Befehl kennst, am besten über die Eigenschaften der Textbox ermitteln, dann könntest du beim Laden der Datei oder bei einem anderem Schritt diese entsprechend laden. Der Befehl könnte so aussehen:
Textbox1.Text = Sheets(„Blatt“).Range(„A1“).Value
Oder hier ein paar Beispiele aus dem Internet:
Private Sub CommandButton1_Click()
TextBox1.Text = „Button1 ist gedrückt“
End Sub
Sub test()
Worksheets(„Tabelle1“).Shapes.AddTextbox(msoTextOrientationHorizontal, _
100, 100, 200, 50).TextFrame.Characters.Text = „Test Box“
End Sub
Eine Textbox wäre also MsgBox(… Diese Funktion kannst Du Dir auch über MSExcel Hilfe darstellen lassen. Wenn die Anzahl, bzw. die maximale Anzahl der darzustellenden Texte bekannt ist, definierst Du eine entsprechende Anzahl an Parametern.
Soweit ich das verstanden habe, wären das Parameter vom Format Text, also String (Dim TextXX as String). Du aktivierst die entsprechenden Zellen mit Cells.(Zeile, Spalte).Activate und überträgst dann den Inhalt dieser Zelle in den zuvor definierten Parameter mit TextXX = AciveCell.
Mit einer MsgBox kannst Du dann den zuvor definierten Parameter jederzeit anzeigen.
Sollte ich Dein Problem missverstanden haben, lass es mich wissen.
dem textfeld kannst du den inhalt einer zelle mit textfeld = range(„A1“).value2 zuweisen. bei textfeld muss noch die korrekte funktion innerhalb des textfeldes aufgerufen werden (wie bei range: .value2).
um den wert aus dem textfeld in eine zelle zu schreiben musst du die beiden seiten tauschen (also beim =).