Hot News:

Unser Angebot:

  Foren auf CAD.de
  VBasic / vb.net / vbs / wsh
  Einfache Frage

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
Autor Thema:  Einfache Frage (1218 mal gelesen)
NichterwitzP
Mitglied
Schüler


Sehen Sie sich das Profil von NichterwitzP an!   Senden Sie eine Private Message an NichterwitzP  Schreiben Sie einen Gästebucheintrag für NichterwitzP

Beiträge: 68
Registriert: 09.11.2006

erstellt am: 18. Jul. 2013 21:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

sorry wenn ich mit einer so einfachen Frage nerve. Ich bin allerdings Anfänger und komm nicht weiter...

Bei dieser einfachen Rechenoperation:

Function Rechteckflaeche(L, B As Double) As Double
        Rechteckflaeche = L * B
End Function

hätte ich es gerne, dass ich die Werte L und B nicht über den Funktionsassistenten zuweise, sondern irgendwo im Quelltext sage: L=Wert aus Zelle b2. Am liebsten global, weil ich die Werte auch öfter bräuchte. Noch besser wäre - ich weiß nicht ob das geht - wenn man das Namenfeld, das man in Excel einer Zelle gegeben hat, verwenden könnte. Also L=Wert aus Zelle"Länge".

Ich weiß - das ist der absolute Anfang - aber genau da steh ich auch gerade... Danke im Voraus!

NichterwitzP

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thomas Harmening
Ehrenmitglied V.I.P. h.c.
Arbeiter ツ



Sehen Sie sich das Profil von Thomas Harmening an!   Senden Sie eine Private Message an Thomas Harmening  Schreiben Sie einen Gästebucheintrag für Thomas Harmening

Beiträge: 2897
Registriert: 06.07.2001

what i think?
I think, no skill

erstellt am: 18. Jul. 2013 21:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für NichterwitzP 10 Unities + Antwort hilfreich

Na, dafür braucht man noch kein Makro - dein Bsp von hier? http://www.lagotzki.de/scripte/vba/functions.html

Die Zelle die den Längenwert enthält mit Laenge bennenen, dito mit Breite

dann kannste in jeglicher freien Zelle = Laenge * Breite eingeben.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MWN
Mitglied
Dipl.-Ing.


Sehen Sie sich das Profil von MWN an!   Senden Sie eine Private Message an MWN  Schreiben Sie einen Gästebucheintrag für MWN

Beiträge: 492
Registriert: 14.02.2007

erstellt am: 19. Jul. 2013 08:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für NichterwitzP 10 Unities + Antwort hilfreich

Guten Morgen,

und wenn es doch per Makro sein soll:

Code:
Const Zelle1 As String = "B2"
Const Zelle2 As String = "B3"

Sub test()
Dim l, b As Double
l = CDbl(ActiveSheet.Range(Zelle1).Value)
b = CDbl(ActiveSheet.Range(Zelle2).Value)
MsgBox CStr(l) & vbCrLf & CStr(b)
End Sub


Alternativ kannst du auch die entsprechenden Zellen benennen und deren Namen (z.B. Länge, Breite) der Range, anstatt Zelle1, Zelle2, mitgeben.
Sieht dann so aus:

Code:
l = CDbl(ActiveSheet.Range("Länge").Value)
b = CDbl(ActiveSheet.Range("Breite").Value)

Grüße und HTH

Tobias

------------------
Besucht mich doch mal in meiner Tischlerei

"...Kommunikation ist nur so gut wie ihr Ergebnis..." - frei nach Richard Bandler / John Grinder

"...Wenn du das tust, was du schon immer tust, wirst du auch nur das erhalten, was du schon immer erhalten hast..."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles... i.R.



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2678
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
privat:
ab 2024 Onshape
seit 2025 SolidWorks for Makers

erstellt am: 19. Jul. 2013 12:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für NichterwitzP 10 Unities + Antwort hilfreich

Also ich denke auch, für diese Aufgabe ist das mit Kanonen auf Spatzen geschossen.
Aber wenn du das nur stellvertretend als Beispiel für den Umgang mit VBA-Funktionen sehen willst:

Behalte deine Funktion im VBA-Modul bei

Code:
Function Rechteckflaeche(L, B As Double) As Double
        Rechteckflaeche = L * B
End Function

In den entsprechenden Zellen schreibst du die Funktion einfach rein, wie jede andere Excel-Funktion, da brauchst du keinen Assistenten dafür:

Code:
=Rechteckflaeche(A1;B1)

Letzter Punkt: Du kannst jeder Zelle einen (fast) beliebigen Namen geben. Einfach die Zelle anwählen, dann kannst du in dem Feld links oberhalb der Tabelle, wo die Adresse der ausgewählten Zelle drin steht, einen Namen rein schreiben, z.B. "Länge" oder "Breite" (natürlich ohne die "")
Dann kannst du diese Namen in deinen Formeln anstelle der Adressen verwenden:

Code:
=Rechteckflaeche(Länge;Breite)

------------------
Klaus

www.al-ko.com | mein Gästebuch |

[Diese Nachricht wurde von KMassler am 19. Jul. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

NichterwitzP
Mitglied
Schüler


Sehen Sie sich das Profil von NichterwitzP an!   Senden Sie eine Private Message an NichterwitzP  Schreiben Sie einen Gästebucheintrag für NichterwitzP

Beiträge: 68
Registriert: 09.11.2006

erstellt am: 19. Jul. 2013 14:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo!

Danke für die Antworten! Ich hätte mal dazuschreiben sollen, dass die Rechteckaufgabe natürlich nichts mit dem zu tun hat, was ich will - daran habe ich es nur erklären wollen...

Ich will eigentlich nur ein lesbaren Anhang zu meiner Excelberechnung, also ein Quelltext, der für sich alleine schlüssig ist.

Im Code von MWN sieht man ja, woher die Werte eingelesen werden. Jetzt würde ich mit den Werten rechnen (vorher definierte Variable Fläche=a*b) und bräuchte jetzt nur noch die Zeile, wie ich die Variable "Fläche" in eine Zelle zurückgebe, statt in einer Messagebox.

Danke nochmal! MFG - NichterwitzP

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MWN
Mitglied
Dipl.-Ing.


Sehen Sie sich das Profil von MWN an!   Senden Sie eine Private Message an MWN  Schreiben Sie einen Gästebucheintrag für MWN

Beiträge: 492
Registriert: 14.02.2007

erstellt am: 19. Jul. 2013 18:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für NichterwitzP 10 Unities + Antwort hilfreich

Na dann genau anders herum:

Code:
Const Ausgabe as String = "B4"
ActiveSheet.Range(Ausgabe).Value = CStr(Rechteckflaeche)

Grüße und HTH

Tobias

PS: die erste Zeile in deinem VBA - Projekt sollte: Option Strict On sein!
-- Und jetzt bitte keinen Glaubenskrieg anfangen... Danke.  --

------------------
Besucht mich doch mal in meiner Tischlerei

"...Kommunikation ist nur so gut wie ihr Ergebnis..." - frei nach Richard Bandler / John Grinder

"...Wenn du das tust, was du schon immer tust, wirst du auch nur das erhalten, was du schon immer erhalten hast..."

[Diese Nachricht wurde von MWN am 19. Jul. 2013 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

NichterwitzP
Mitglied
Schüler


Sehen Sie sich das Profil von NichterwitzP an!   Senden Sie eine Private Message an NichterwitzP  Schreiben Sie einen Gästebucheintrag für NichterwitzP

Beiträge: 68
Registriert: 09.11.2006

erstellt am: 19. Jul. 2013 18:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo!! Danke für die Antwort - nur irgendwie kommt da 0 als Ergebnis raus. (Option strict will er auch nicht machen)
Und dann interessiert mich noch, wie man dann in Excel sagt, das dieses Makro immer ausgeführt wird. Ich seh ja jetzt nur durch die F5-Prüfung ob es funktioniert. Wenn es dann mal funktioniert, soll er ja immer l x b rechnen.

Jetziger Code:

Const Länge As String = "B1"
Const Breite As String = "B2"
Const Ausgabe As String = "B3"

Sub test()
Dim l, b, Fläche As Double
l = CDbl(ActiveSheet.Range(Länge).Value)
b = CDbl(ActiveSheet.Range(Breite).Value)
Fläche = A * b
ActiveSheet.Range(Ausgabe).Value = CStr(Fläche)

End Sub

Schönes Wochenende!
NichterwitzP

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Ehrenmitglied V.I.P. h.c.
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 20. Jul. 2013 10:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für NichterwitzP 10 Unities + Antwort hilfreich

Servus
Du hast einen Schreibfehler in der Rechnung (Variabel A gibt es nicht). Zusätzlich würde ich Sonderzeichen (zB Umlaute) in Variablennamen vermeiden.
Code:
Flaeche = l * b
Warum willst du das Makro immer ausführen? Was hast du vor?
Du solltest versuchen dein Ablauf/Rechnung über normale Excel-Formel zu erstellen.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles... i.R.



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2678
Registriert: 06.11.2000

erstellt am: 22. Jul. 2013 09:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für NichterwitzP 10 Unities + Antwort hilfreich

Wenn du das so machst, wie ich dir oben beschrieben habe, dann wird die Funktion nach den selben Regeln neu berechnet, wie jede Standard-Excel-Funktion.
Und du sparst dir den gesamten Declarations-Wasserkopf
Und du kannst die Formel auf beliebige Zellen anwenden, ohne diese im VBA-Modul zu definieren.

------------------
Klaus

www.al-ko.com | mein Gästebuch |

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MWN
Mitglied
Dipl.-Ing.


Sehen Sie sich das Profil von MWN an!   Senden Sie eine Private Message an MWN  Schreiben Sie einen Gästebucheintrag für MWN

Beiträge: 492
Registriert: 14.02.2007

erstellt am: 22. Jul. 2013 10:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für NichterwitzP 10 Unities + Antwort hilfreich

Stimmt Klaus, das einfachste und wirklich einfachste, wäre, eine benutzerdefinierte Funktion, die im Excel genau so verwendet wird, wie eine Standard Excelfunktion, zu erstellen.
Allerdings sollte die Berechnung der Recheckfläche, wenn ich es richtig verstanden habe, nur als Beispiel dienen und hinter den Fragen ein anderer Sinn stecken...
Mal sehen, vielleicht klärt uns der Fragesteller noch auf, denn dann können hier noch weitere Anregungen gegeben werden...
Grüße

Tobias

------------------
Besucht mich doch mal in meiner Tischlerei

"...Kommunikation ist nur so gut wie ihr Ergebnis..." - frei nach Richard Bandler / John Grinder

"...Wenn du das tust, was du schon immer tust, wirst du auch nur das erhalten, was du schon immer erhalten hast..."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

NichterwitzP
Mitglied
Schüler


Sehen Sie sich das Profil von NichterwitzP an!   Senden Sie eine Private Message an NichterwitzP  Schreiben Sie einen Gästebucheintrag für NichterwitzP

Beiträge: 68
Registriert: 09.11.2006

erstellt am: 22. Jul. 2013 14:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,
ooh mann - ja, ein schöner Fehler...! Danke dafür.. Der Grund weshalb ich das so machen wolle, ist eigentlich nur, dass mein Professor gesagt hat, dass er es gerne in Visual Basic hätte. Dabei kann man die Funtionen auch einfach in Excel mit den Zellbezügen machen - auch wenn es bei mehreren Schleifen langsam unübersichtlich wird. In Delphi war ich es so gewohnt StrToFloat(Eingabe) - verständliche Variablen deklarieren - mit denen rechnen - und FloatToStr(Ausgabe) und man hat einen schönen übersichtlichen und prüfbaren Quelltext den ich in meinen Anhang stellen kann.  Meine Berechnungen selbst erfordern nicht unbedingt VBA. Aber ich werde jetzt die Funktionen "programmieren", bei denen es sich anbietet und ansonsten von den eher umständlichen Zellbezügen über VBA absehen! Zu der Erkenntnis musste ich hier erstmal kommen! Vielen Dank auf jeden Fall für die Antworten! MFG NichterwitzP

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles... i.R.



Sehen Sie sich das Profil von KMassler an!   Senden Sie eine Private Message an KMassler  Schreiben Sie einen Gästebucheintrag für KMassler

Beiträge: 2678
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
privat:
ab 2024 Onshape
seit 2025 SolidWorks for Makers

erstellt am: 24. Jul. 2013 14:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für NichterwitzP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von MWN:
Stimmt Klaus, das einfachste und wirklich einfachste, wäre, eine benutzerdefinierte Funktion, die im Excel genau so verwendet wird, wie eine Standard Excelfunktion, zu erstellen.
Allerdings sollte die Berechnung der Recheckfläche, wenn ich es richtig verstanden habe, nur als Beispiel dienen und hinter den Fragen ein anderer Sinn stecken...
Mal sehen, vielleicht klärt uns der Fragesteller noch auf, denn dann können hier noch weitere Anregungen gegeben werden...
Grüße

Tobias


äh..hab ich doch geschrieben?
Zitat:
Original erstellt von KMassler:
Also ich denke auch, für diese Aufgabe ist das mit Kanonen auf Spatzen geschossen.
Aber wenn du das nur stellvertretend als Beispiel für den Umgang mit VBA-Funktionen sehen willst...


War schon klar, dass das nur ein Beispiel sein soll.
Ist doch kein Problem, statt der Rechteckflächenformel jeden beliebigen Inhalt hier rein zu schreiben.

Ist ME doch die einfachste Variante. Aber wie immer: Viele Wege führen nach Rom.


------------------
Klaus

www.al-ko.com | mein Gästebuch |

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz