Zelleinhallt aus excel in vba

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.

Hallo basskim,

die ‚Frage‘ in deiner An-Frage habe ich leider nicht gefunden.

Versuche deine Frage anders zu formulieren (was für Umfrage?).
Mache ein Beispiel (welche Daten?).

MfG
W.W.

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:

  1. 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

Also, ein Textfeld erzeugen kannst du so:

ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, PosLinks, PosOben, Breite, Höhe).Select
' PosLinks, PosOben, Breite, Höhe durch entsprechende Werte bzw. Variablen ersetzen

Nach dieser Zeile ist die neue Textbox ausgewählt. Den Werte der Zelle A2 (also Zeile 2, Spalte 1) kannst du nun dort darstellen durch:

Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = Activesheet.Cells(2,1)

Die Zeilen- und Spaltenwerte kannst du natürlich auch durch errechnete Variablen ersetzen.

Ich hoffe, das erklärt das Prinzip ausreichend. Ich habe nur Excel 2010 zur Verfügung und hoffe, dass es mit Excel 2007 genauso funktioniert.

Viele Grüße,
BellHouse

Habe mich im Titel verschrieben…„Zelleninhalt von Excel in einer Textbox von VBA anzeigen“ klingt besser!!!

Wenn Du noch keine Textbox hast:

Activeworksheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 200, 50).TextFrame.Characters.Text = „Test Box“

Ansonsten mit z.B. Textfeld 1:

ActiveSheet.Shapes(„Textfeld 1“).TextFrame.Characters.Text = Range(„A1“).Value
Hier wird der Inhalt der Zelle „A1“ in das Textfeld geschrieben.

Grüezi Basskim

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.

Hmmm, wo ist denn diese Textbox?

Als Ansatz kannst Du mal folgendes verwenden:

=TextBox1.Value = Worksheets(„Tabelle1“).Range(„A1“).Text

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo basskim,

nach einigen erfolglosen Experimenten verweise ich lieber auf diesen Link:
http://www.excel-vba-easy.com/vba-userform-control-t…

Gruß Hugo

Hallo!
Ich verstehe das Problem nicht, denn falls Du schon irgendwas in VBA zustande gebracht hast, solltest Du das können!

Gruß Wolfram

Super das hat mir jetzt geholfen…danke für den guten und schnellen Tipp!!!

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!!!

Hallo Baskim,

mit

Bezeichnung1.Text = Cells(1, 1).Value

kannst du den Inhalt aus der Zelle A1 in der Textbox „Bezeichnung1“ auslesen.

schönen Gruß
Stefan

Hallo basskim,

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)

MfG
W.W.

Hallo basskim,

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:

  1. Erstelle das Textfeld (ohne Text-Inhalt)
  2. Selektiere das Textfeld (falls erforderlich) per Mausklick.
  3. Füge in der Bearbeitungszeile eine Formel mit dem Bezug zur gewünschten Zelle ein. z.B.: =Tabelle2!C5

Textfeld in Userform:

  1. Erstelle das Textfeld (ohne Text-Inhalt)
  2. Selektiere das Textfeld (falls erforderlich) per Mausklick.
  3. 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

Gruß
Franz

Hallo basskim,

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

Hallo basskim,

sorry, war am Wochenende abwesend.

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.

MfG MwieMichel

Hallo,

arbeitest Du mit Userforms oder direkt auf dem Tabellenblatt? Das geht aus Deiner Anfrage nicht hervor. Könntest Du ggf. eine Beispieldatei posten?

Gruß,
Ptonka

weisst du, wie man solche textfelder erstellt?

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 =).