最終更新日:2020-07-05Variant仮引数にRange.Valueを配列で渡す方法ツイッターで出したVBAのお題です。Variant型は、どんなデータ型も受け入れることができます。RangeオブジェクトのValueを配列で受け取るにはVariant変数が必要です。実引数にRangeオブジェクトを直接指定する場合には注意が必要です。FunctionQ1実行結果は?・0・2・4・6解説のツイート以下で一連の解説ツイートをしています。https://twitter.com/yamaoka_ss/status/1279771918011252738複数セルのValueを配列にするにはVariant変数に代入します。※単一セルの場合は配列になりません。Rangeを配列としてFunctionの引数に渡す場合はどうしたら良いでしょうか。Variant変数に入れてから渡せば問題ありません。引数にRangeを記述したらどうなるでしょうか。関数側ではRangeオブジェクトのまま受け取ります。今回の場合の変数v1がこれになります。Variant変数v1はRangeオブジェクトです。Rangeこの代入ではValueはコピーされません。左辺のRangeのValueがクリアされてしまいます。これがエラーにならないのは要注意です。この代入結果を期待してVBAを書くことはありえないと思います。右辺のRangeにValueを指定する必要があります。Range.ValueこれでValueだけが一括でコピーされます。実引数にRangeを指定し仮引数のVariantに配列を入れるにはどうしたら良いでしょうか。実引数のRangeを配列にしてから渡すようにします。次のような方法があります。・Valueを指定する・()で囲むValueプロパティを指定することで配列になります。これが最も一般的な方法でしょう。他の方法として、()で囲むことでRange既定のValueが取得されるので配列になります。※CVar(Range(...))としても配列になりません。代入で右辺の配列が左辺の.Valueに入る結果は、B1:B2は空欄。B3:B4は1が入ります。B5:B6は1が入ります。従って、答えは4です。RangeこれではValueが入らないところが要点です。「VBAのVariant型について」https://excel-ubara.com/excelvba4/EXCEL_VBA_441.htmlVariantデータ型は、他の何らかのデータ型として明示的に宣言されていない変数で、全てのデータ型を入れることができます。Variantデータ型には型宣言文字はありません。Variant型は、特別な値Empty、Error、Nothing、Nullを格納することもできます。」の記事マクロ記録での色のマイナス数値についてツイッターで出したVBAのお題です。マクロの記録で文字色などの色を指定するとマイナス数値で記録される場合がありますが、このマイナス数値は何かを問う問題です。マクロの記...VBAのString型の最大文字数についてツイッターで出したVBAのお題です。String型はVBAリファレンスでは、「可変長文字列は、最大で約20億(2^31)文字を格納できます。これについて、本当は何文字まではいるのかについての問題です。Variantの数値型と文字列型の比較ツイッターで出したVBAのお題です。Variant型は、どんなデータ型も入れることができます。具体的なデータ型の代わりに使用することで、より柔軟にVBA記述ができるようになります。その一方で、少々特殊な挙動もあり、使いこなすにはそれなりの知識が必要になる場合もあります。Variant仮引数にRange.Valueを配列で渡す方法Variant仮引数のByRefとByValの挙動違いツイッターで出したVBAのお題です。Variant型は、どんなデータ型も入れることができてしまいます。具体的なデータ型の代わりに使用することで、より柔軟にVBA記述ができるようになります。この便利さゆえに、逆に注意しなければならない挙動もあります。100桁の正の整数値の足し算ツイッターで出したVBAのお題です。数の単位に「無量大数」というものがあります。VBAでこの無量大数の足し算をするにはどうしたら良いでしょうか。そこで、100桁の正の整数の足し算をVBAで実現してみましょう。Match関数の限界」についての誤解ツイッターで出したVBAのお題です。発端はエゴサーチからです。「教えて!goo」で引用されていたのを見つけました。あちこちで引用されているのは見かけることはあるのですが、以下ではよく言うディスられているような文章を見かけました。VBAで数値を漢数字に変換する方法ツイッターで出したVBAのお題です。算用数字を漢数字に変換するVBAです。滅多に必要になるものではないのに、なぜこんな問題を出したかと言うと、最近シリーズで書き始めた「Excel将棋」で必要になったからです。囲碁で相手の石を囲んで取るアルゴリズムツイッターで出したVBAのお題です。Excel囲碁を作っていて、相手の石を囲んで取れるかどうかの判定、相手の石を取るにはどうしたら良いかというもの。ここで、8二に黒を打てば、このように囲まれている白が取られます。VBAで「3Lと5Lのバケツで4Lの水を作る」を解くツイッターでVBAのお題として出したものです。昔からよくある問題です。「3Lと5Lのバケツで4Lの水を作る」これをVBAを使って自動で求めてみようという事です。(3,5,言語依存の関数を使用できるFormulaLocalツイッターでVBAのお題として出したものです。複数セルに一括で数式を入れるバ宇井の記述と、言語環境に依存する関数をセルに設定する場合のFormulaプロパティの使い方についての問題です。見るTRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)無効な前方参照か、コンパイルされていない種類への参照です。Case)|VBA入門9.メッセージボックス(MsgBox関数)|VBA入門10.マクロとは?VBAとは?VBAでできること|VBA入門ホームエクセル全般ツイッター出題回答Variant仮引数にRange.Valueを配列で渡す方法このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。アクセスランキングサイトマップ事業案内お問い合わせホームエクセル全般ツイッター出題回答Variant仮引数にRange.Valueを配列で渡す方法このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。