Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1832to1836
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Erklärung Exceltool VBA-Programm

Erklärung Exceltool VBA-Programm
21.06.2021 11:03:54
Lukas
Hi liebe Forum User,
ich habe bereits zu nachfolgenden Thema zwei Fragen gestellt und diese wurden schnell und sehr verständlich beantwortet. Hierzu noch einmal ein großes Dankeschön.
Es handelt sich bei dem Programm um ein Exceltool, dass ein Kollege erstellt hat der leider schon einige Zeit aus dem Büro aus Altergründen ausgeschieden ist. Der Kollege hat seiner Zeit jedoch ein Exceltool erstellt zur Baukostenberechnung.
Mir wurde nun die ehrenwerte Aufgabe zuteil, dass Programm etwas anzupassen ( ich bin kein Excel Experte aber der jüngste im Büro... der Reste erklärt sich von selbst). Die Anpassungen konnte ich mit Hilfe des Webs und mit Hilfe des Forums auch tatsächlich durchführen.
Nun habe ich aber festgestellt, dass Excel in Verbindung mit VBA eine recht große Hilfe und und Möglichkeiten bietet ( wen man es beherrscht). Also habe ich mich dazu entschieden mich etwas intensiver damit auseinander zu setzen, darum wollte ich Fragen ob mir jemand den Code der besagten Baukostenberechnung erklären kann damit ich verstehe was da genau passiert.
Das Programm ist unter : https://www.herber.de/bbs/user/146688.xlsm zu finden
Code Position hinzufügen:
Option Explicit

Private Sub Beschreibung_Change()
End Sub

Private Sub Cancel_Click()
'Eingabefenster schliessen
Unload Positionhinzufügen
End Sub

Private Sub CommandButton1_Click()
'Eingaben in Zellen übernehmen
Dim last As Integer
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
ActiveSheet.Cells(last, 1).Value = Positionhinzufügen.Ordnungszahl.Value
ActiveSheet.Cells(last, 2).Value = Positionhinzufügen.Gewerk.Value
ActiveSheet.Cells(last, 3).Value = Positionhinzufügen.Leistungsbeschreibung.Value
ActiveSheet.Cells(last, 4).Value = Positionhinzufügen.Mengeneinheit.Value
ActiveSheet.Cells(last, 5).Value = CCur(Positionhinzufügen.Einheitspreisniedrigst.Value)
ActiveSheet.Cells(last, 6).Value = CCur(Positionhinzufügen.Einheitspreisdurchschnittlich.Value)
ActiveSheet.Cells(last, 7).Value = CCur(Positionhinzufügen.Einheitspreishöchst.Value)
Unload Positionhinzufügen
End Sub

Private Sub UserForm_Initialize()
'Mengeneinheiten
With Positionhinzufügen.Mengeneinheit
.AddItem "m"
.AddItem "St"
.AddItem "m²"
.AddItem "m³"
.AddItem "psch"
.AddItem "m²/Wo"
.AddItem "m/Wo"
.AddItem "Monat"
End With
'Gewerke
With Positionhinzufügen.Gewerk
.AddItem "Baustelleneinrichtung"
.AddItem "Erd- und Entwässerungsarbeiten"
.AddItem "Beton- und Stahlbetonarbeiten"
.AddItem "Maurerarbeiten"
.AddItem "Gerüstbauarbeiten"
.AddItem "Trockenbauarbeiten"
.AddItem "Fensterbauarbeiten"
.AddItem "Installationsarbeiten Heizung/Sanitär"
.AddItem "Installationsarbeiten Elektro"
.AddItem "Verputzarbeiten"
.AddItem "Estricharbeiten"
.AddItem "Malerarbeiten"
.AddItem "Fliesenleger-/Bodenbelagsarbeiten"
.AddItem "Tischlerarbeiten"
.AddItem "Galabauarbeiten"
End With
End Sub

Private Sub Ordnungszahl_Change()
End Sub

Private Sub UserForm_Click()
End Sub

Private Sub Gewerk_Change()
End Sub
Code restliche Funktionen:
Option Explicit
Sub Schaltfläche1_Klicken()
'Öffnen des Eingabefensters
Positionhinzufügen.Show
End Sub Sub Speichernunter1()
'Öffnet Speichern unter
Dim strDateiname As String
ChDrive "c:\"
ChDir "c:\Users\Lars\Documents"
strDateiname = ("Baukostenberechnung.pdf")
Application.Dialogs(xlDialogSaveAs).Show (strDateiname)
End Sub Sub SpaltenAusblenden()
Sheets("Baukostenberechnung").Activate
Columns("C:F").EntireColumn.Hidden = True
Columns("I").EntireColumn.Hidden = True
End Sub Sub SpaltenEinblenden()
Sheets("Baukostenberechnung").Activate
Columns("C:F").EntireColumn.Hidden = False
Columns("I").EntireColumn.Hidden = False
End Sub Sub Sortieren()
Sheets("Datenbank").Activate
Range("A1:G100").Sort Key1:=Range("A2"), Header:=xlYes
End Sub Ich hoffe das Sprengt nicht den Rahmen falls doch, möchte ich mich trotzdem nochmal für die beiden vorherigen Antworten bedanken Ihr habt mir damit sehr geholfen.
Grüße
Lukas

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Erklärung Exceltool VBA-Programm
21.06.2021 12:16:04
Yal
Hallo Lukas,
es passiert in dem gegebenen Code nicht viel, was nicht zu den Titel der Sub passen würde (ich habe die Datei nicht geöffnet)
_ in "Speichernunter1" wird ein "Speichern unter" nach Vorgabe/Vorschlag eines Zeilverzeichnis
_ in SpalteEinblenden und SapltenAusblenden geht es um Spalten ein- und ausblenden
_ in Sortieren wird sortiert
_ Schaltfläche1_Klicken wird verwendet um einen Formular "Positionhinzufügen" zu zeigen bzw. öffnen (.Show)
_ beim Starten des Formulars ("Initialize") werden einige Auswahlliste mit festen Werte befüllt
_ "CommandButton1_Click" übergibt die im Formular eingegebene Daten ins Excel in eine neue Zeile am Ende der bisher vorhandenen. Bei die 3 letzten werden die Einträge in einem Zahl (currency) umgewandelt. Schliesst auch das Formular.
_ Cancel_Click schliesst ("Unload") das Formular.
VBA lässt sich nicht immer so leicht lesen, aber hier kann man sagen, dass dein Kollege sauber programmiert hat und keine wesentliche "Programmierer-Schweinerei" eingebaut hat.
Ein Tipp für Einsteiger: den Reiter "Entwicklertools" einblenden lassen und dort bei jegliche Gelegenheit den Makro-Rekorder verwenden und Code anschauen (kann man alles löschen). So machst Du am einfachsten die Verbindung zwischen Aktion und Code und lernt das Objekt-Modell von Excel kennen. Starte mit kurzen Befehlfolge. Nach 20 Klicks hast Du einen Code, das dich erschlagen wird.
Viel Erfolg
Yal
Anzeige
AW: Erklärung Exceltool VBA-Programm
23.06.2021 08:48:29
Lukas
Hi,
ich habe eine Frage : Warum funktioniert die unten stehenden Teile des Code's nur, wenn ,an Sie als Value formatiert und nicht wenn man es als Text formatiert?
ActiveSheet.Cells(last, 2).Value = Positionhinzufügen.Gewerk.Value
ActiveSheet.Cells(last, 3).Value = Positionhinzufügen.Leistungsbeschreibung.Value
Denn das Gewerk ist ja ein Text und die Leistungsbeschreibung auch, grundsätzlich interessiert mich der genau unterschied zwischen Value und Text, denn ich habe das Gefühl, dass das nichts so einfach ist.
Grüße
Lukas
AW: Erklärung Exceltool VBA-Programm
23.06.2021 13:33:50
Yal
Hallo Lukas,
es ist nicht auf welche Daten "Gerwerk" und "Leistungsbeschreibung" eingegeben werden sondern, nach welchem Objekt-Typ diese erreichtet worden sind.
Normalerweise "Value" und "Text" sollte dasselbe zurückgeben. (ich gehe davon aus, dass dein Frage sich auf die rechte Seite des Gleichzeichen, weil auf die zellen hast du auch einen "Value")
Wenn Du die Rückgabe als Text formatieren möchte, kannst Du eine Typumwandlung verwenden:

ActiveSheet.Cells(last, 2).Value = CStr(Positionhinzufügen.Gewerk.Value)
ActiveSheet.Cells(last, 3).Value = CStr(Positionhinzufügen.Leistungsbeschreibung.Value)
VG
Yal
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige