• ベストアンサー

VBA ユーザ定義関数の使い方です

VBA ユーザ定義関数の使い方です Sub test() cells(1,1)=UpperSutegana(cells(1,1)) End sub http://www.relief.jp/itnote/archives/002223.phpのソースをコピー としましたがうまくいきません。なぜでしょうか?

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

  • ベストアンサー
  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.2

問題なくできます。 A1:ぁぃぅァィゥ    ↓  testを実行    ↓ A1:あいうアイウ 何が問題なのでしょうか? ※特定の文字ができない等々

その他の回答 (3)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.4

>としましたがうまくいきません。 どうなるのでしょうか。 特に問題は無いようですが。 UpperSuteganaのコードを見ても、実行の途中で、Cells(1,1)にデータを返したり、参照したりしていないので、循環参照にもならない。はじめCells(1,1)からのデータを取って、全部の文字列を大文字に変換してしてCells(1,1)に返しているだけだから、無限ループにもならない。 testをちゃんと実行しましたか。 なお、ふつうユーザー定義関数の利用は、Excelのセルに入れて使うので、Cells(1,1)のデータを変換するのに、Cells(1,1)に入れることはありません。

  • kybo
  • ベストアンサー率53% (349/647)
回答No.3

ユーザー定義関数の使い方を間違えておられませんか? 以下のページではセルに入力して使用する方法を紹介していますが、今回はそのような必要はありません。 http://www.relief.jp/itnote/archives/002223.php の太字の部分(Function UpperSutegana(strOrg As String) As String~End Functionまで)すべてをコピーし、標準モジュールに貼り付け。 同じ標準モジュールにtarono0123 さんのソース(Sub test()~End subまで)を貼り付け。 testを実行すれば、A1のセルに入力したものは、正しく変換されるはず。

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.1

こんにちは。  2行目を   Cells(1, 2) = UpperSutegana(Cells(1, 1))  としたら、うまくできました。  元のだと、無限ループになるかもしれません。 では。

関連するQ&A

  • VBAをExcel2010/2013で利用

    下記URLのサンプルファイルに含まれるVBAで作成されたユーザー定義関数について、 Excel2003(Windows7)の環境で利用することが出来ました。 http://www.relief.jp/itnote/archives/003799.php しかしながら、Excel2010およびExcel2013(ともにWindows7)で開くと、結果が #VALUE! と変わってしまい、正しく表示されませんでした。 VBAの参照設定でも同じものにチェックを入れている状態ですが、うまくいきません。 (ただし、Microsoft Excel XX.X Object LibraryやMicrosoft Office XX.X Object Library などバージョンの差異はあり) Excel2010またはExcel2013において、このユーザー定義関数を 正しく利用できる方法が分かりましたらご教示いただけますと助かります。

  • エクセルのユーザー定義関数で(VBA)

    エクセルのVBAで、セルに「=SheetName」と書き込めば、その関数を書き込んだセルが属するシート名をセルに代入さるようなユーザー定義関数を作りたいと考えています。 で、標準モジュールに Public Function SheetName(test) SheetName = ????? End Function と、書き込んでふと止まりました。 ユーザー定義関数を書き込んだシートの名前ってどうやって取得すればいいのでしょうか?VBでいうSenderみたいなのってあるんでしょうか? どなたか?詳しい方教えて頂けないでしょうか? 宜しくお願いいたします。

  • VBAでのユーザ定義関数の返り値

    VBAでのユーザ定義関数の返り値をエクセルのセルに表示させる際、 色を変更して表示するにはどうすれば良いのでしょうか? つきのような関数のerrorの時だけ赤色にしたいのです。 functin test(ss as double) if ss >10 then test=ok else test =error! end if end function

  • ユーザー定義関数を作りVBAで記述

    aaaと言う、ユーザー定義関数を作りVBAで記述して使う場合はどのように記述すればよいでしょうか。 通常のワークシート関数であれば、 Cells(1, 1) = Application.Sum(Range("G1:G100")) などとなりますが、 Cells(1, 1) = Application.aaa(Range("G1:G100")) とするとエラーになります。 初歩的な質問だとは思いますが、よろしくお願いします。

  • VBAでドロップダウンリストを連動させたものを作るには?

    VBAでドロップダウンリストを連動させたものを作ることが出来ますでしょうか? 今まで入力規則の設定をつかって見ていましたがどうやら実現不可能と思われることが分かってきました。 VBAでの連動したリストの代替案を考えていますが・・・ いい方法は無いでしょうか? このページのようなことがやりたいと思っています。 http://www.relief.jp/itnote/archives/000822.php

  • VBAの中でユーザー定義関数を使うときに

    VBAの中でユーザー定義関数を引数に変数を持たせて使いたいのですが、変数をうまく認識してくれません。 VBAの中でユーザー定義関数を使うにはどうしたらいいのでしょうか? よろしくお願いします。

  • VBAでif文にorを使う場合の仕様

    http://www.relief.jp/itnote/archives/vba-if-or.php このページにも書かれてあるのですが、 Sub textss() aaa = 2 If aaa = 0 Or 1 Then bbb = 1 ElseIf aaa = 2 Then bbb = 2 End If ccc = bbb End Sub を実行すると cccには2が代入されそうなのですが、実際には1が代入されてしまいます。 If aaa = 0 Or aaa = 1 Then と入力する必要があります。 それでは、 If aaa = 0 Or 1 Then とした時、プログラムではどういう処理がなされているのでしょうか?

  • オフィスソフトウェアの比較

    "OpenOffice"やら"LibreOffice"やらの『表計算ソフトウェア』へも、 『("Phonetic関数"の様な)振り仮名出力用関数( http://www.relief.jp/itnote/archives/000082.php )』が搭載されているのでしょうか?

  • Excel VBA ユーザー定義関数をイベントマクロで使用する

    Excel VBA ユーザー定義関数をイベントマクロで使用する Excel2003を使用しています。 あるセルと同色に塗りつぶされたセルの値を合計したく、下記1のユーザー定義関数を作成しました。 このユーザー定義関数を下記2のイベントプロシージャ内で呼び出して使用したいのですが、可能でしょうか? 可能であれば、どのようにコードを書いたらいいでしょうか? Call を使用するのかな?と思い、コードを追加してみましたが、引数の型が一致しないといった内容のエラーメッセージが表示されてしまいました。 よろしくお願いします。 ------------------------------------------------------------- 1.ユーザー定義関数(同色セルの合計) Function SumColor(hanni As Range, iro As Range) As Double   Dim myrng As Range   SumColor = 0    For Each myrng In hanni     If myrng.Interior.ColorIndex = iro.Interior.ColorIndex Then      SumColor = SumColor + myrng.Value     End If    Next myrng End Function 2.イベントマクロ(C列3行目以下ダブルクリックで塗りつぶし) Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)   If Target.Column = 3 And Target.Row >= 34 Then    Range(Cells(Target.Row, 3), Cells(Target.Row + 1, 38)).Interior.ColorIndex = 36   End If End Sub

  • VBAで書いたExcelユーザー定義関数が上手く動きません

    WinXPSP2 Office2003 を使用しています。 プログラムは、本やネットで調べただけの素人です。 具体的には、大量のascファイルにファイル自身の情報をヘッダとして書き込む作業をします。 そのために、ファイルの情報などを返すユーザー定義関数を作り、それを用いた一連の書き込み作業をマクロにして保存し、アドイン化してしまおうと考えました。 作業をマクロにしてアドイン化することはできるようになりましたが、肝心のユーザー定義関数を作るVBAが良くわかりません。 たとえば以下のように、ファイルの作成日時を返すユーザー定義関数を書いて標準モジュールに張ってみたのですが、上手く動きませんでした(具体的には”#VALUE!”になる)。 Function CreationDate() CreationDate = ActiveWorkbook.BuiltinDocumentProperties("Creation Date").Value End Function 次の、ファイルの名前を返すユーザー定義関数は上手く動きました。 Function FileName() As String FileName = Application.ActiveWorkbook.Name End Function なぜ後者が動いて前者が動かないのか、よく理解できません。 どのように変えればよいのか、教えていただけないでしょうか? よろしくお願いします。

専門家に質問してみよう