Excel 2007 - Wie erstelle ich VBA-Datenbaken zum Abrufen von Inhalten per Funktion?

L

Lemuel

Gast
Hallo liebe CB-Community,

Ich bearbeite gerade einige Aufgaben zur Thermodynamik in Excel (einfach weils Spaß macht :D) und bin auf ein Bequemlichkeitsproblem gestoßen:

Für einige Berechnungen brauche ich hin und wieder irgendwelche Stoffdaten aus Tabellen, die ich jedesmal nachschlagen muss.
Ich habe diese Stoffdaten zwar ausgedruckt vorliegen, möchte es aber als elektronische Datenbank in VBA parat haben (auch für spätere Rechnungen), sodass mir Excell den gesuchten Wert per Funktion mit Angabe eines Suchkriteriums ausspuckt.

Zum Beispiel:
Ich möchte wissen, welchen Dampfdruck (<-- gesuchter Wert) Wasserdampf bei 45°C (<-- Suchkrieterium) hat.
In der Tabelle entnimmt man dann den Wert: 95,82 mbar.
Nun will ich eine Funktion basteln (nennen wir es "Dampftafel"), der nach der Temperatur fragt und den entsprechenden Druck ausgibt --> =Dampftafel([Temperatur])

Funktionen erstellt man - soweit ich weis - in VBA (Visual Basic for Application), womit ich mich nur bescheiden auskenne.
Jedenfalls soll die Datenbank und die Funktion global gelten (also auch bei neu erstellten Excel Mappen verfügbar sein).

Wie stelle ich das am besten an?
Muss ich die Tabelle in den Quellcode der Funktion eintippen? ...

Hintergrund dieser Bemühung ist neben Bequemlichkeitsgründen auch, dass die ganze Rechnung bei Änderung von Werten automatisch angepasst wird. Anstatt also die Temperatur manuell in die Funktion "Dampftafel" einzugeben, verweise ich auf eine andere Zelle, die die Temperatur bereits beinhaltet (womöglich sogar als Rechenergebnis einer anderen Formel!). Das tolle ist somit, dass man "Was-wäre-wenn..." Simulationen durchführen kann, indem man nur die Eingangswerte verändert und keine Gefahr läuft, das Anpassen bestimmter Werte zu übersehen.

MfG
Lemuel
 
Entweder du erstellt die einen Datenbank (MySQl, Access,...) mit den werten und ragst diese ab.

Einfacher wäre wenn du dir eine Excel Tabelle/Datein anlegst und mit eien SVerweis arbeitest
 
das ist sogar eine sehr einfache aufgabe. in deinem fall würdest du vorgehen und auf einem Tabellenblatt, diese Tabelle erstellen.
Dann erstellst du eine UserForm (Fenster), in dem du verschiedene Angaben machen kannst.

Bsp.:

Abfrage: "Welche Temperatur in °C?"
Eingabe: "45"

START

Du hinterlegst jetzt im Quellcode dass das Programm auf deinem Tabellenblatt, in der Spalte X (Temp) ab zeile Y bis zeile Z abfragt welcher wert in dieser Zeile Steht. Das wird in einer Variable Gespeichert. Ist diese Variable nun gleich, hast du die zeile, nun kannst du alle spalten dieser zeile in variablen abspeichern, und dir zb in einer msgbox anzeigen lassen oder was auch immer.

im wesentlichen brauchst du

for ZeileGesucht = ZeileY to ZeileZ
variable = Sheets("DampfTabelle").cells(ZeileGesucht, SpalteX)
if Variable = EingegebeneTemp then
...
exit sub
end if
next

das is nich sehr schwer und auch schnell gelernt
 
@trekschaf

Funktioniert denn sverweis auch über den Tellerrand hinaus? Also kann ich die Tabelle dann als externe Excel-Datei abspeichern und sie zu allen anderen Excel-Mappen verknüpfen? Ich will die Daten ja nicht als Bestandteil der Arbeitsmappe erstellen, sondern als "public" für alle Excell-Mappen verfügbar machen.

@ 7H0M45

Also wenn ich das richtig verstanden hab: Ich soll ein Excel-Sheet mit Namen "Dampftabelle" erstellen und in einem Ordner abspeichern.
Dann erstelle ich in VBA eine UserForm mit nem Button drauf, der den sub-Quellcode erhalten und auf die Daten der externen Tabelle zugreifen soll? Ok soweit. Nur will ich kein (Pop-Up-)Fenster oder so erstellen, das graphische Bedienelemente aufweist, sondern nur eine Funktion (ähnlich wie =sverweis([...];[...];...) usw. ), den es in eine Zelle einzutippen gilt, damit das Ergebnis durch Zellverknüpfung in anderen Formeln weiterverwendet werden kann.
Ich möchte also auch keine Msgbox oder so anzeigen lassen.

Kann ich dann also statt der UserForm einfach function nehmen? Mit gleichem Quellcode?

Edit: Ich will btw NICHT die ganzen blöden Werte aus der Tabelle in den Quellcode selbst reinschreiben müssen, nach dem Motto:

Public Function Dampftafel(temp As Double) As Double

If temp = 1 Then pressure = 200
If temp = 2 Then pressure = 400
If temp = 3 Then pressure = 600
If temp = 4 Then pressure = 800
usw...

Dampftafel = pressure
End Function


So nicht! Die Werte sollen schon aus anderen seperaten Tabellen stammen.

Naja ich Danke euch beiden schonmal für erste Tipps und versuch mich mal mit den Codes. Probieren geht über studieren^^
 
Zuletzt bearbeitet:
also prinzipiell machst du deine Tabelle auf ein Tabellenblatt. Dieses blatt kann sich in der gleichen datei befinden, oder in irgendeinem Ordner. falls sie in einem ordner liegt, musst du eben den entsprechenden pfad im quellcode oder deinem excel sheet hinterlegen. ist aber wesentlich komplizierter. einfacher ist es wenn du die tabelle in der gleichen datei, auf einem eigenen tabellenblatt speicherst.

ob die ausgabe in eine msgbox, direkt in eine bestimmte zelle oder sonstwo machen. genauso kannst dus mit oder ohne userform machen, ist total egal

du solltest dich vlt erstmal in erste schritte vba in excel einarbeiten.

wichtig hierbei dass es wirklich excel ist, die sprachen unterscheiden sich minimal.

bei fragen kannst du mir privat ne nachricht schreiben, des würde sonst zu ausführlich werden hier im forum
 
Zuletzt bearbeitet:
Zurück
Oben