{"id":541,"date":"2012-01-20T08:42:34","date_gmt":"2012-01-20T07:42:34","guid":{"rendered":"http:\/\/www.capri-soft.de\/blog\/?p=541"},"modified":"2012-01-20T08:50:29","modified_gmt":"2012-01-20T07:50:29","slug":"vba-einsatz-und-ersatz-fur-den-trinaren-operator","status":"publish","type":"post","link":"https:\/\/www.capri-soft.de\/blog\/?p=541","title":{"rendered":"VBA: Einsatz und Ersatz f\u00fcr den trin\u00e4ren Operator ?:"},"content":{"rendered":"<h1>Aufgabenstellung<\/h1>\n<p>In Hochsprachen wie C#.NET und JAVA hilft der Einsatz vom trin\u00e4ren Operator oftmals, den Code leserlicher zu machen.<\/p>\n<p>Ein Beispiel daf\u00fcr ist das Zuweisen von Werten f\u00fcr ein Datenbankmodell bei einer Cursor-Iteration. <\/p>\n<p>Wenn eine Materialnummer nicht vorhanden\/leer ist, soll als String &#8222;not available&#8220; angegeben werden:<\/p>\n<p>Bsp. in C#<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n...\r\nSqlDataReader reader = comm.ExecuteReader();\r\n...\r\nwhile (reader.Read())\r\n{\r\n   vo = new WorkflowPositionVO();\r\n   vo.material = (reader.GetValue(0).ToString()==&quot;&quot;)?\r\n                       &quot;not available&quot;:reader.GetValue(0).ToString();\r\n...\r\n<\/pre>\n<p>Da der obige Code kompakt auf einer Zeile steht, und die gew\u00fcnschte Funktionalit\u00e4t nicht durch 6-zeilige if\/else-Konstrukte gew\u00e4hrleistet wird, f\u00fchrt dies bei vielen Attributen des Objektes &#8222;WorkflowPositionVO&#8220; zu einer erh\u00f6hten Lesbarkeit des Codes. Man stelle sich 100 WorkflowPositionVO-Attribute vor, die zugewiesen werden m\u00fcssen. Die Zahl von 600 (+100 Leerzeilen) w\u00fcrde auf 100 Zeilen reduziert werden, und die Fehleranf\u00e4lligkeit dramatisch reduziert. <\/p>\n<h1>Problem<\/h1>\n<p>Der trin\u00e4re Operator ?: wird in VBA leider nicht unterst\u00fctzt. <\/p>\n<h1>Ansatz<\/h1>\n<p>Die Funktionalit\u00e4t von ?: kann auf einen einfachen IF\/ELSE-Zweig abgebildet werden, den man in eine Funktion auslagern k\u00f6nnte. Man k\u00f6nnte sich jetzt eine Funktion selbst implementieren, oder die fertige Funktion IIF benutzen. Hierbei handelt es sich um eine echte VBA-Funktion, die evtl. bereits durch ACCESS-Abfragen in SQL Statements bekannt ist.<\/p>\n<h1>L\u00f6sung<\/h1>\n<p>Bsp. in VBA:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n   material = IIf(Tabelle.Cells(i,1)=&quot;&quot;,&quot;not available&quot;,Tabelle.Cells(i,1))\r\n<\/pre>\n<iframe src=\"http:\/\/www.facebook.com\/plugins\/like.php?href=https%3A%2F%2Fwww.capri-soft.de%2Fblog%2F%3Fp%3D541&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light\" scrolling=\"no\" frameborder=\"0\" allowTransparency=\"true\" style=\"border:none; overflow:hidden; width:450px;margin-top:5px;\"><\/iframe>","protected":false},"excerpt":{"rendered":"<p>Aufgabenstellung In Hochsprachen wie C#.NET und JAVA hilft der Einsatz vom trin\u00e4ren Operator oftmals, den Code leserlicher zu machen. Ein Beispiel daf\u00fcr ist das Zuweisen von Werten f\u00fcr ein Datenbankmodell bei einer Cursor-Iteration. Wenn eine Materialnummer nicht vorhanden\/leer ist, soll als String &#8222;not available&#8220; angegeben werden: Bsp. in C# &#8230; SqlDataReader reader = comm.ExecuteReader(); &#8230; &hellip; <a href=\"https:\/\/www.capri-soft.de\/blog\/?p=541\" class=\"more-link\"><span class=\"screen-reader-text\">VBA: Einsatz und Ersatz f\u00fcr den trin\u00e4ren Operator ?:<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[12],"tags":[],"class_list":["post-541","post","type-post","status-publish","format-standard","hentry","category-vba"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4yGeN-8J","jetpack_likes_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/541","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=541"}],"version-history":[{"count":5,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/541\/revisions"}],"predecessor-version":[{"id":545,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/541\/revisions\/545"}],"wp:attachment":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=541"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=541"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=541"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}