I
Igelkuesser
Hallihallo,
Ich habe ein Problem:
Als Vorbereitung auf meine VBA-Abschlussprüfung habe ich ein bisschen herumgefrickelt während der arbeit und mir ein Beispielprojekt in Excel 2007 erstellt.
Schwierigkeiten hatte ich beim Anzeigen von Daten aus einer Access-Datenbank. Wie zeige ich die an? Habs schon mal mit einer Listbox probiert, da kann man ja auch mehrere Spalten anzeigen lassen, dummerweise kann man bei der Listbox nur einen Eintrag, und nicht etwa ein "feld" auswählen (feld im sinne von Schnittpunkt einer spalte und zeile). MSFlexGrid habe ich auch kurz ausprobiert, aber habe ich es nicht geschafft, mehrere Spalten zu erstellen und laut mehreren Forenbeiträgen kann man die Daten darin nicht bearbeiten.
Deshalb kam ich auf die glorreiche idee, für jedes feld eine textbox zu erstellen, war noch recht spannend bis alles geklappt hat. Dummerweise kann ich die so erstellten Textboxen weder ansprechen noch umbenennen.
Frage: Wie soll ich das anstellen? ^^
(Falls ihr euch fragt warum überhaupt per Programm erstellen: Die Anzahl der Recordsets in der datenbank sind dynamisch, also mal mehr, mal weniger.)
Im Anhang ein Bild, wie es aussieht. (Wo ich arbeite muss euch nicht interessieren, darum geschwärzt
) Ja ich weiss, ist noch nicht fertig, ist auch in wenigen Stunden entstanden...
Hier der Code der Funktion, welche die Textboxen erstellt:
Oder gäbe es noch eine andere Variante wie ich die Daten darstellen könnte?
Wäre offen für Vorschläge
so... Feierabend ruft
Mahlzeit,
Phil
Ich habe ein Problem:
Als Vorbereitung auf meine VBA-Abschlussprüfung habe ich ein bisschen herumgefrickelt während der arbeit und mir ein Beispielprojekt in Excel 2007 erstellt.
Schwierigkeiten hatte ich beim Anzeigen von Daten aus einer Access-Datenbank. Wie zeige ich die an? Habs schon mal mit einer Listbox probiert, da kann man ja auch mehrere Spalten anzeigen lassen, dummerweise kann man bei der Listbox nur einen Eintrag, und nicht etwa ein "feld" auswählen (feld im sinne von Schnittpunkt einer spalte und zeile). MSFlexGrid habe ich auch kurz ausprobiert, aber habe ich es nicht geschafft, mehrere Spalten zu erstellen und laut mehreren Forenbeiträgen kann man die Daten darin nicht bearbeiten.
Deshalb kam ich auf die glorreiche idee, für jedes feld eine textbox zu erstellen, war noch recht spannend bis alles geklappt hat. Dummerweise kann ich die so erstellten Textboxen weder ansprechen noch umbenennen.
Frage: Wie soll ich das anstellen? ^^
(Falls ihr euch fragt warum überhaupt per Programm erstellen: Die Anzahl der Recordsets in der datenbank sind dynamisch, also mal mehr, mal weniger.)
Im Anhang ein Bild, wie es aussieht. (Wo ich arbeite muss euch nicht interessieren, darum geschwärzt

Hier der Code der Funktion, welche die Textboxen erstellt:
Code:
Public Function TextBoxErstellen()
Dim i As Integer 'zähler zeilen
Dim j As Integer 'zähler "spalten"
Dim left As Integer
Dim top As Integer
Dim width As Integer
Dim height As Integer
Dim totalleft As Integer
Dim totaltop As Integer
left = 6
top = 6 + 15.75
width = 18
height = 15.75
Dim objTextBox As MSForms.TextBox
i = 0
j = 0
Do While i < 30 '6 zeilen
j = 0
totalleft = 6 'mindestabstand von oben: 6 (hier wird er auf 6 zurückgesetzt)
Do While j < 21 '21 "spalten"
Select Case j 'boxen sind unterschiedlich lang.
Case 1 'index startet bei 0, also 1 = 2.box
width = 84 'breite der längsten box
Case 10 To 14
width = 30 'breite der mittleren boxen
Case Else
width = 18 'normale breite
End Select
top = (i * 15.75) + 6 + 15.75 '6=standardwert, 15.75 = 1. (manuell erstellte) box
Set objTextBox = frmTabelle.Controls.Add("Forms.TextBox.1", "txtDemo0", True)
With objTextBox
.left = totalleft 'wird immer weiter nach rechts gerutscht
.top = top
.width = width
.height = height 'fixer wert
.SelectionMargin = False 'minimaler Einzug der Box links muss weg
End With
Set objTextBox = Nothing
totaltop = top + 15.75 + 6 'so wird die maximale höhe herausgefunden
totalleft = totalleft + width 'so wird der abstand links korrekt berechnet
j = j + 1
Loop
i = i + 1
Loop
'totaltop enthält nun die totale höhe der felder.
'anpassen der höhe von frmTabelle
If frmTabelle.height < totaltop Then
frmTabelle.ScrollHeight = totaltop
Else
frmTabelle.ScrollHeight = frmTabelle.height - 4
End If
End Function
Oder gäbe es noch eine andere Variante wie ich die Daten darstellen könnte?
Wäre offen für Vorschläge

so... Feierabend ruft
Mahlzeit,
Phil