{"id":55000142,"date":"2015-12-01T00:00:00","date_gmt":"2020-01-24T15:58:17","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=142"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Mathematische_VBAFunktionen","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Mathematische_VBAFunktionen.html","title":{"rendered":"Mathematische VBA-Funktionen"},"content":{"rendered":"<p class='introduction'>Abseits der Grundrechenarten kommen mathematische Berechnungen sowohl immer wieder in VBA-Routinen zum Einsatz, wie auch in Abfragen auf Tabellenfelder. Einen &uuml;berblick &uuml;ber das, was VBA uns zu diesem Thema anzubieten hat, zeigen wir im Folgenden &#8211; und ebenso, wie sich der Funktionsumfang durch die Excel-Bibliothek erweitern l&auml;sst.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1506_Mathe.accdb<\/b><\/p>\n<h2>Die Bibliothek Math von VBA<\/h2>\n<p>&ouml;ffnen Sie den Objektkatalog des VBA-Editors und w&auml;hlen links oben aus der Combobox den Eintrag <b>VBA<\/b> aus. Markieren Sie dann die Zeile <b>Math<\/b> in der Klassenauflistung links. Rechts werden Ihnen nun die Funktionen der Klasse angezeigt &#8211; siehe Bild 1.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/Objektkatalog.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/Objektkatalog.png\" alt=\"Die VBA-Klasse Math im Objektkatalog\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Die VBA-Klasse Math im Objektkatalog<\/p>\n<p>Ziemlich &uuml;berschaubar, was uns da geboten wird. Gerade mit zw&ouml;lf Methoden werden wir begl&uuml;ckt. Wenn es um naturwissenschaftliche oder finanzielle Berechnungen geht, dann bleibt Ihnen nicht erspart, die komplexeren Funktionen selbst in Modulen nachzur&uuml;sten und zu programmieren.<\/p>\n<p>Aber durchlaufen wir einmal das Vorhandene. Zun&auml;chst f&uuml;r die einfacheren Methoden&#8230;<\/p>\n<p><b>Abs<\/b> gibt den <b>Absolutwert<\/b> einer Zahl zur&uuml;ck. Das bedeutet nichts anderes, als dass eine negative Zahl in eine positive verwandelt wird. <b>+13<\/b> und <b>-13<\/b> haben beide den gleichen Absolutwert <b>13<\/b>.<\/p>\n<p><b>Sgn<\/b> ist &auml;hnlich, gibt aber lediglich das Vorzeichen der Zahl zur&uuml;ck. Allerdings nicht als <b>String<\/b>, sondern als Zahl. Jede Zahl gr&ouml;&szlig;er als 0 ergibt eine 1, jede kleiner als 0 eine -1. Nur bei 0 ist auch der R&uuml;ckgabewert eine 0. <b>Round<\/b> rundet eine Flie&szlig;kommazahl auf eine w&auml;hlbare Anzahl von Nachkommastellen: <\/p>\n<pre>  Round (2.4674)\r\n> 2,47<\/pre>\n<p>Lassen Sie Vorsicht walten, wenn es um das Runden von Zahlen geht, besonders wenn es um W&auml;hrungsberechungen handelt! Denn dort ist Runden nicht gleich Runden. Mathematisches Runden und kaufm&auml;nnisches Runden etwa unterscheiden sich. Unterziehen Sie einmal die Zahl <b>2,465<\/b> einem VBA-<b>Round<\/b>. Als Ergebnis erhalten Sie <b>2,46<\/b>! Die <b>5<\/b> am Ende wird also nicht aufgerundet. F&uuml;r korrektes Runden ben&ouml;tigen Sie daher eine eigene Funktion, die etwa so auss&auml;he:<\/p>\n<pre><span style=\"color:blue;\">Function <\/span>Round2( _\r\n    No<span style=\"color:blue;\"> As Variant<\/span>, _\r\n    Dgts<span style=\"color:blue;\"> As Long<\/span>) _\r\n   <span style=\"color:blue;\"> As Variant<\/span>\r\n    <span style=\"color:blue;\">Dim <\/span>N<span style=\"color:blue;\"> As Double<\/span>\r\n    <span style=\"color:blue;\">Dim <\/span>F<span style=\"color:blue;\"> As Double<\/span>\r\n    F = 10 ^ Dgts\r\n    N = 0.5 + No * F\r\n    Round2 = CLng(N) \/ F\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Hier wird <b>F<\/b> die Zehnerpotenz der Nachkommastellen zugewiesen. F&uuml;r 2 st&uuml;nde in der Variablen dann die 100. Das wird mit der &uuml;bergebenen Zahl <b>No<\/b> multipliziert und 0.5 addiert.<\/p>\n<p>Schlie&szlig;lich wird per <b>CLng<\/b> der Nachkommateil abgeschnitten und das Ergebnis wieder durch den Faktor <b>F<\/b> dividiert. Sie k&ouml;nnen das im Modul <b>mdlMathe<\/b> der Beispieldatenbank nachvollziehen, indem Sie die Routine <b>TestRound<\/b> aufrufen.<\/p>\n<p><b>Rnd<\/b> im Verein mit <b>Randomize<\/b> sind keine mathematischen Funktionen im eigentlichen Sinne. <b>Rnd<\/b> erzeugt eine Zufallszahl (<b>Single<\/b>) im Bereich von 0 bis 1. Um andere Wertebereiche f&uuml;r die Zufallszahlen zu generieren, multiplizieren Sie einfach den R&uuml;ckgabewert mit einem Faktor und\/oder addieren Werte dazu. Beispiel f&uuml;r eine Funktion, die Zufallszahlen im Bereich 10 bis 100 generiert:<\/p>\n<pre><span style=\"color:blue;\">Function <\/span>Rnd100()<span style=\"color:blue;\"> As Single<\/span>\r\n     Randomize\r\n     Rnd100 = 10 + 90 * Rnd()\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Das <b>Randomize<\/b> k&ouml;nnen Sie auch weglassen. Es initialisiert lediglich den internen Generator von VBA neu, der unter anderem auf der Systemzeit beruht und darauf eine Sequenz ablaufen l&auml;sst. Die Gefahr von Wiederholungen ist aber nahezu ausgeschlossen. Mit <b>Sqr<\/b> ermitteln Sie die <b>Quadratwurzel<\/b> einer Zahl. Die Funktion ist weitgehend &uuml;berfl&uuml;ssig, da das Ergebnis auch &uuml;ber Potenzierung zu erhalten ist:<\/p>\n<pre>  Sqr(10)\r\n 10 ^ 0.5<\/pre>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Access &#091;basics&#093;<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/282\/access-basics?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 400 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000142\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/index.php\/data\/wp\/v2\/posts\/55000142?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000142\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"2c6d4a5d32\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Abseits der Grundrechenarten kommen mathematische Berechnungen sowohl immer wieder in VBA-Routinen zum Einsatz, wie auch in Abfragen auf Tabellenfelder. Einen &uuml;berblick &uuml;ber das, was VBA uns zu diesem Thema anzubieten hat, zeigen wir im Folgenden &#8211; und ebenso, wie sich der Funktionsumfang durch die Excel-Bibliothek erweitern l&auml;sst.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662015,66062015,44000013],"tags":[],"class_list":["post-55000142","post","type-post","status-publish","format-standard","hentry","category-662015","category-66062015","category-AccessFunktionen"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.9.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Mathematische VBA-Funktionen - Access [basics]<\/title>\n<meta name=\"description\" content=\"Abseits der Grundrechenarten kommen mathematische Berechnungen sowohl immer wieder in VBA-Routinen zum Einsatz, wie auch in Abfragen auf Tabellenfelder. Einen \u00dcberblick \u00fcber das, was VBA uns zu diesem Thema anzubieten hat, zeigen wir im Folgenden \u2013 und ebenso, wie sich der Funktionsumfang durch die Excel-Bibliothek erweitern l\u00e4sst.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Mathematische_VBAFunktionen.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mathematische VBA-Funktionen - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Abseits der Grundrechenarten kommen mathematische Berechnungen sowohl immer wieder in VBA-Routinen zum Einsatz, wie auch in Abfragen auf Tabellenfelder. Einen \u00dcberblick \u00fcber das, was VBA uns zu diesem Thema anzubieten hat, zeigen wir im Folgenden \u2013 und ebenso, wie sich der Funktionsumfang durch die Excel-Bibliothek erweitern l\u00e4sst.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Mathematische_VBAFunktionen.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:58:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/..\/tl_files\/images\/Objektkatalog.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\">\n\t<meta name=\"twitter:data1\" content=\"8\u00a0Minuten\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/access-basics.de\/#website\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Access [basics]\",\"description\":\"DAS ACCESS-MAGAZIN F\\u00dcR ALLE, DIE VON 0 AUF 100 WOLLEN\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/access-basics.de\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Mathematische_VBAFunktionen.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/Objektkatalog.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Mathematische_VBAFunktionen.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Mathematische_VBAFunktionen.html\",\"name\":\"Mathematische VBA-Funktionen - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Mathematische_VBAFunktionen.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:58:17+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Abseits der Grundrechenarten kommen mathematische Berechnungen sowohl immer wieder in VBA-Routinen zum Einsatz, wie auch in Abfragen auf Tabellenfelder. Einen \\u00dcberblick \\u00fcber das, was VBA uns zu diesem Thema anzubieten hat, zeigen wir im Folgenden \\u2013 und ebenso, wie sich der Funktionsumfang durch die Excel-Bibliothek erweitern l\\u00e4sst.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Mathematische_VBAFunktionen.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Mathematische_VBAFunktionen.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Mathematische_VBAFunktionen.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Mathematische_VBAFunktionen.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Mathematische_VBAFunktionen.html\",\"name\":\"Mathematische VBA-Funktionen\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000142","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/comments?post=55000142"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000142\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000142"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}