Abfrage mit Preis aus allen drei Tabellen

Werbung
Excel-Programmierung
F.Steyer
Zwischen Ausführungsmodus und Entwicklungsmodus wechseln:
-> Extras -> Makros -> Sicherheit: auf „Mittel“ setzen
Ausführungsmodus: “Makros aktivieren“
Entwicklungsmodus: “Makros deaktivieren”
(1) Grundfunktionen
Anwendungsfall Golfstatistik
Zeilen haben Zahlen, Spalten haben Buchstaben als Koordinaten
Die aktive Zelle wird angezeigt.
Mit Überschriften anfangen.
Dann Zellen einfügen, evtl. Inhalte versetzen (ausschneiden/einfügen).
Es gibt drei Datentypen (Text/Zahl/Formel mit =).
Formatierungen (-> Format -> Zellen)
Log rückwärts (-> Bearbeiten -> eingeben rückgängig)
Automatische Vervollständigung
Spalten ein- und ausblenden (-> Format -> Spalte explizit)
Berechnungen
Summe, Mittelwert, Anzahl, Minimum, Maximum
als Funktionen, mit Menü
Diagramme
Datenbereich markieren, F11 drücken
es erscheint ein Balkendiagramm, ändern mit -> Diagramm -> Diagrammtyp
oder mit Menü
Eingabemasken
Datenbereich markieren, -> Daten -> Maske
(2) VBA-Anschluss
(2.1) Command Button
-> Ansicht/Symbolleisten/Steuerelement-Toolbox
(2.2) einfache Programme
Private Sub CommandButton1_Click()
MsgBox ("Hallo")
End Sub
Private Sub CommandButton2_Click()
Dim xlDatei As Workbook
Dim xlTabelle As Worksheet
Dim xlZelle As Range
Set xlDatei = Application.Workbooks("Button.xls")
Set xlTabelle = xlDatei.Sheets("Tabelle1")
Set xlZelle = xlTabelle.Range("E6")
MsgBox xlZelle.Value
End Sub
Private Sub CommandButton3_Click()
Dim xlDatei As Workbook
Dim xlTabelle As Worksheet
Dim xlZelle As Range
Set xlDatei = Application.Workbooks("Button.xls")
Set xlTabelle = xlDatei.Sheets("Tabelle1")
Set xlZelle = xlTabelle.Range("E9")
xlZelle.Value = "Titanic1"
End Sub
Private Sub CommandButton4_Click()
Dim xlDatei As Workbook
Dim xlTabelle As Worksheet
Dim xlZelle As Range
Dim zeile, spalte As Integer
zeile = 11
spalte = 5
Set xlDatei = Application.Workbooks("Button.xls")
Set xlTabelle = xlDatei.Sheets("Tabelle1")
Set xlZelle = xlTabelle.Cells(zeile, spalte)
xlZelle.Value = "Titanic2"
End Sub
(3) Datenbankzugriff
Access-Datenbank liegt in F:\Frank\ExcelWord\db1.mdb
einbinden „Microsoft ActiveX DAO ObjectLibrary 3.6“
Private Sub CommandButton1_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim sql As String
Set db = OpenDatabase("F:\Frank\ExcelWord\db1.mdb")
sql = "SELECT pnr FROM person"
Set rs = db.OpenRecordset(sql)
MsgBox (rs!pnr)
End Sub
Private Sub CommandButton2_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim sql As String
Set db = OpenDatabase("F:\Frank\ExcelWord\db1.mdb")
sql = "SELECT pname FROM person"
Set rs = db.OpenRecordset(sql)
Dim xlDatei As Workbook
Dim xlTabelle As Worksheet
Dim xlZelle As Range
Dim zeile, spalte As Integer
zeile = 11
spalte = 5
Set xlDatei = Application.Workbooks("Button2.xls")
Set xlTabelle = xlDatei.Sheets("Tabelle1")
Set xlZelle = xlTabelle.Cells(zeile, spalte)
xlZelle.Value = rs!pname
End Sub
(4) Makros
Aufzeichnung und Ausführung
-> Extras -> Makros -> Aufzeichnen
Dialog mit Abfragen nach:
- Makroname
- Tastenkombination
- Gültigkeitsbereich
- Beschreibung
Aufgezeichneter Code
Sub Wochenplan_einfügen()
'
' Wochenplan_einfügen Makro
' Erzeugt das Gerüst eines Wochenplans
'
'
ActiveCell.FormulaR1C1 = "Wochenplan"
ActiveCell.Offset(1, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "Montag"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "Dienstag"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "Mittwoch"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "Donnerstag"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "Freitag"
ActiveCell.Offset(1, -5).Range("A1").Select
ActiveCell.FormulaR1C1 = "8:00"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "9:00"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "10:00"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "11:00"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "12:00"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "13:00"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "14:00"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "15:00"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "16:00"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "17:00"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "18:00"
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub
Nachbearbeitung des Codes ist möglich.
(5) Besonderheit: Kreuztabelle
Unterschiedliche Tabellenkonzepte in Access und Excel
x
y
z
y
x
z
ACCESS-Tabelle
ACCESS-Tabelle
EXCEL-Tabelle dazu
Andere Beispiele für Kreuztabelle
Geg.: 3 Tabellen
EXCEL-Tabelle
Datenmodell dazu
Kunde
KNr
Kname
kauft
Artikel
Kadresse
Anr
Aname
Stück
Abfrage mit Stück aus allen drei Tabellen
Kreuztabelle
neue Abfrage, mit Assistent, stellt drei Fragen: nach
- Zeilenüberschrift,
- Spaltenüberschrift,
- Wert im Kreuzungspunkt
APreis
Abfrage mit Preis
Abfrage mit Preis aus allen drei Tabellen
Kreuztabelle
neue Abfrage, mit Assistent, stellt drei Fragen: nach
- Zeilenüberschrift,
- Spaltenüberschrift,
Herunterladen