Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


69139 / 76734 ←次へ | 前へ→

【12115】ユーザー定義関数について
質問  つん E-MAIL  - 04/3/24(水) 12:57 -

引用なし
パスワード
   こんにちは。いつもお世話になります。
久々に質問させていただきます。
ユーザー定義関数についての質問です。よろしくお願いします。

アンケート入力・集計をしています。

列:質問項目
行:回答者(1行1件、430件)

各質問の回答項目には連番がふってあって、回答されている項目の数字を入力するようになっています。不明・無回答は「N」と入力。
一つの質問に、複数回答も多々あり、その場合は、1つのセルに、カンマ区切りで、複数の数字が入力されています。

集計は、質問項目毎に各回答項目がいくつ選択されているかカウントするものです。
そのカウント用に、ユーザー定義関数を作りました。
が・・・問題が発生してしまいました。

以下は作ったユーザー定義関数です。
'==============================================
Function mySub(argR1 As Range, argR2 As Range) As Long
'argR1 : 数えたいカテゴリの数字あるいは「N」
'argR2 : カウントする範囲
  
  Dim strR1Value As String
  Dim buf, e1, e2, e3
  Dim lngA As Long

  If argR1.Count > 1 Then
    mySub = 999
    Exit Function
  End If
  
  strR1Value = argR1.Value  '参照するセルの値を代入
  buf = argR2.Value      '集計する範囲の値を代入
  
  For Each e1 In buf
    e3 = Split(e1, ",")   'カンマ区切りの数字を分割
    
    For Each e2 In e3
      If strR1Value = e2 Then
        lngA = lngA + 1
      End If
    Next e2
    
  Next e1
  
  mySub = lngA

End Function
'==============================================

この関数は一応正常には動くようです。
しかし、広範囲にコピペしたときに、フリーズしてしまうのです。
コピペして、再計算されて、きちんと値も表示されます。
しかし、その時点でフリーズしてしまい、強制終了の憂き目にあいます(T_T)
おそらくエクセルのリソースの問題なのだと思いますが、
なにか対処方法はないでしょうか?

ファイルを客先にお渡しすることになると思うので、あまり不安定なままではまずいと思いますし、最終的には作業列を作って普通の関数で対応するのがベターかなあ?とは思ってます。

しかし、もし「ここをこうすれば良い(安全)」みたいなことがあれば、出来たらユーザー定義関数で対応したいと思っています。
よろしくお願いします。

あ、集計表ですが、計算対象範囲は、1列430行で、
計算式を入れる範囲は、16行×48列=768セル です。

それと、上記のエラーとは関係ないですが、私はユーザー定義関数はあまり作ったことがありません。
エラー処理も、今回は、返り値をLong型にしましたので、エラー時は「999」を返すようにとりあえずしてみました。
通常は、どういうやり方がベターなのでしょうか?
また、ユーザー定義関数を作る場合の注意点等々、アドバイスいただけたら幸いに思います。

よろしくお願い申し上げます。

0 hits

【12115】ユーザー定義関数について つん 04/3/24(水) 12:57 質問
【12119】Re:ユーザー定義関数について Jaka 04/3/24(水) 13:56 発言
【12120】Re:ユーザー定義関数について こうちゃん 04/3/24(水) 14:18 発言
【12124】Re:ユーザー定義関数について つん 04/3/24(水) 14:32 発言
【12138】自動再計算をやめて・・・ つん 04/3/24(水) 19:30 お礼
【12160】Re:ユーザー定義関数について つん 04/3/25(木) 15:07 お礼
【12176】Re:ユーザー定義関数について 角田 04/3/25(木) 18:47 回答
【12187】Re:ユーザー定義関数について つん 04/3/26(金) 9:19 発言
【12410】再チャレンジ! つん 04/4/2(金) 16:15 質問
【12415】Re:再チャレンジ! Jaka 04/4/2(金) 17:17 発言
【12464】やっぱ違ってた。 Jaka 04/4/5(月) 13:04 発言
【12465】え?どこが? つん 04/4/5(月) 13:31 お礼
【12466】忘れてた・・・・ つん 04/4/5(月) 13:44 発言
【12470】Re:忘れてた・・・・ Jaka 04/4/5(月) 16:00 発言
【12416】Re:再チャレンジ! 角田 04/4/2(金) 17:21 回答
【12428】Re:再チャレンジ! ni 04/4/2(金) 21:47 発言
【12474】検証中 つん 04/4/5(月) 16:40 お礼
【12476】Re:検証中 ni 04/4/5(月) 17:34 発言
【12479】ああああ!(>_<) つん 04/4/5(月) 19:11 発言
【12484】出来ました! つん 04/4/6(火) 9:34 お礼
【12467】Re:再チャレンジ! つん 04/4/5(月) 13:47 お礼
【12469】Re:再チャレンジ! 角田 04/4/5(月) 14:46 回答
【12472】Re:再チャレンジ! つん 04/4/5(月) 16:34 お礼

69139 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free