• ベストアンサー

ExcelVBAでのデータ型変換、もしくは、サブルーチンの引数のデータ型指定について

ExcelVBAでVariant型のものをRange型、もしくはString型に変換したいのですができますか? また、サブルーチンを定義する際に、引数のデータ型をRange型で定義したいのですができますか? わかる方は教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

VariantからRangeあるいは、Stringへは単に代入すればいいだけで、型変換は必要ないと思います。(もともとのオブジェクトがあっていれば) 引数のデータ型は sub prog1 (r as Range) というようにすればいいです。

kamkamkam3
質問者

お礼

どうもありがとうございます。 型変換の件は、確かに代入でできました。ありがたいです。大きな辞書のようなVBAの本をみてものってなかったので、困っていました(できないのかな?、と) 引数のデータ型指定も、もちろんできました。 本当にありがとうございました。 ユーティリティーモジュールをつくって、色々なマクロからそのモジュールを使おうと思っていたのですが、引数をrange型の引数を渡すとどうしてもうまくいかなかったのです。 ありがとうございました。

関連するQ&A

  • サブルーチンの引数としてハッシュを渡したい

    ハッシュを引数として受け取り、そのハッシュの内容を csv形式に変換し出力するというサブルーチンを作っています。 ハッシュのキー名は固定なのですが、 引数として渡すハッシュの名前がバラバラの場合、 それを引数としてうけとることは可能なのでしょうか? また、どのように受け取ればいいでしょうか?

    • ベストアンサー
    • Perl
  • サブルーチンに引数を2つ以上渡したい

    Access2002、vba上で サブルーチンに引数を2つ指定したいのですが、 なぜか「コンパイルエラー 修正候補=」 と出てしまいます。 引数を1つにするとうまく動作します。 どなたかお分かりの方いらっしゃいましたら教えて ください。 宜しくお願いします。 サンプルコード: -------------------------------- the_subroutine(a, b) ' ※ここでコンパイルエラー Sub the_subroutine(c As String, d As Object) End Sub -------------------------------

  • ExcelVBAでの関数の引数の指定方法

    ExcelVBAでInStr関数を使っていました。 InStr関数の書式は InStr(Start,String1,String2,Compare)となっていて 最初の引数のStartは省略しても良いと本に書いてあったので以下のように書きました。 ドル位置(0)=instr(string1:=選択範囲,string2:="$") するとコンパイルエラーというダイアログボックスが出て「:=」の部分が青く反転しました。ダイアログボックスに書いてあるメッセージは以下のとおりです。 コンパイルエラー:修正候補:区切り記号 対処方法がわからなく困っております。もしわかる方が見えましたら、教えてください。よろしくお願いします。ExcelVBAに関しては初心者で、さっぱりわかりません。また、辞書のような本をもっているので、調べてみてもわかりません。よろしくお願いします。

  • サブルーチンの引数の、呼び出し側の呼称を得る

    サブルーチンの呼び出し、例えば sr($p); という呼び出しがあった場合、サブルーチンsb()の中で、引数は@_として扱われて、  $p の値などは  $_ で知ることが出来ます。 それではサブルーチンsb()の方から、  $_ が呼び出し側で何と呼ばれているか知ることは出来るのでしょうか? つまり、この場合、$_は呼び出し側で  $p と呼ばれているわけですが、この呼称をサブルーチン側で知ることは出来るでしょうか。

    • ベストアンサー
    • Perl
  • Fortranのサブルーチン引数について

    他人が作ったFortran(恐らくFortran77)のプログラムで計算をしようとしています。 コンパイルはできるのですが,実行するとエラーが出てしまい困っています。 エラーメッセージは 「forrtl:severe(157):Program Exception - access violation」 となっていて,実行時エラー番号で調べると 「プログラムが適切な参照権を持っていない仮想アドレスに書き込み,または読み取り を行おうとした」と出ていました。 Fortran初心者の自分にはイマイチ意味が判らないのですが,エラーが出た後に サブルーチンのある決まった場所に黄色い矢印が示されます。 そこで今,その部分のサブルーチンを確認しているところです。 前置きが長くなってしまいましたが サブルーチンの中を確認している途中で疑問に思った所が一つあります。 問題のサブルーチンは --------------------------------------- call dbesl(EN,0,BX0,BY0,BI0,BK0)     subroutine dbesl(X,NOR,BX,BY,BI,BK) FN = NOR  ・  ・  ・ 11 NOR = FN               <---この行に黄色い矢印が出る return end --------------------------------------- となっているのですが,サブルーチンを呼び出すcall文の所で 2つ目の引数が『0』となっているのは正しい使い方なのでしょうか? どうもサブルーチン内の計算をしてメインプログラムに引数を返す所が おかしいような気がしています。 因みにメインプログラムに戻る際の"FN"の値は『0』となっていました。 コンパイラはCompaq Visual Fortranを使用しています。 足りない情報は出来るだけ追記していきますので,ご教示宜しくお願いします。

  • AccessVBAで作成した物を簡単にExcelVBAデータにとか変換

    AccessVBAで作成した物を簡単にExcelVBAデータにとか変換 出来ないでしょうか 初心者レベルのため詳しい方おりましたらお願いします! ExcelVBAを覚えたいのですがどこのメーカーの本がいいとかサイト知ってる方がいたら教えてください! 保安台帳をExcelVBAで作成してみたいんです! 宜しくお願いします!

  • 引数について質問

    私プログラミング初心者ですので、できるだけ優しい解説をしていただければ幸いです! 引数について、以下のような解説がありました。 「引数には仮引数と実引数の2種類が存在する。仮引数は、関数を定義する際に変数で指定する引数である。また、実引数は、プログラムの実行時に関数に引き渡される値となる引数である。つまり、関数の実行時には、実引数の値が仮引数に代入されることになる。」 質問:1「関数を定義する際に変数で指定する引数である。」という記述の中で「関数を定義」とありますが、実際のソースコードにおいて何に対応するかわかりません。簡潔なソースコードを交えて解説していただければ幸いです。 質問2:「関数を定義」に限らず、プログラミングにおいて「定義」という言葉をよく見ますが、これは本質的にどういう意味をもっているのでしょうか?具体的なソースコースコードを交えて解説してくださると幸いです。 もしかして、その定義とは例えば「public static void main(String arg[]){」のような「メソッド宣言」のことですか? 質問3:「関数の実行時には、実引数の値が仮引数に代入されることになる。」と書いてありますが、 これはどういうことですか、僕が実際にソースコードで記述してみるので、その考えが正しいか判定してください package 第4章; public class A { public static void main(String arg[]){ double x; x=Math.sqrt(2.0); System.out.println("2.0の平方根は"+x); } } 僕の考え:String arg[]が仮引数で、実引数2.0がString arg[]に代入されるってことでしょうか? 「定義」といえば、上記のソースコードでは、public static void main(String arg[]){ 以外見当たらないので、、 僕の考え2:Mathクラスは、標準クラス(javaが最初から備えているクラス)だから、プログラマが「関数を定義」しなくても予め関数が定義されているから、関数を定義する必要がない、ということでしょうか?

    • ベストアンサー
    • Java
  • ExcelVBAで初期値のセット

    ExcelVBAで初期値のセット Typeで定義したデータタイプの変数にConstで初期値をセットしたいのですがどのようにしたら良いのでしょうか。 例えば Public Const Sdata As String = "AAAAA" Public Const Idata As Long = 1 これはできますが、 Type typeA Sdata As String Idata As Long End Type Public Const Adata As typeA = "AAAAA",1 これはできません。 Typeで定義したデータ型にいるれ方法をお教えください。 ExcelVBA Type Const で検索してみましたが見つけきれませんでした。

  • ExcelVBAで変数を用いた範囲指定について

    お世話になります。 ExcelVBAで困っていますので、アドバイスをお願いします。 A5:A10とD5:D10までといったように離れたセルへ Rangeを用いて範囲指定を行いたいのですが、 その際、行を示す数字に変数を用いたいと考えています。 この場合、どういう指定をしたら宜しいでしょうか? またRangeではなく他の方法もありましたら、 是非、ご提案願います。 どうぞよろしくお願いします。

  • ExcelVBA ユーザ定義関数と定数配列

    2010以降のExcelVBAです ユーザー定義関数として使うfunction 此の引数として 幾つかの項に配列数式、又は定数配列を与えたいのです が、 此の際の 引数の受け方と処理の仕方 此が判りません 例を交え お教え願えないでしょうか? 宜しくお願い致します。

専門家に質問してみよう