Excelマクロ初心者(ほぼ初めて)の大学生です。
研究室でのデータ整理&パラメータ算出で頻繁にExcelを使用します。
かなり面倒で、他の学生に頼むにも整理&算出方法を一から説明しなければならないので、マクロを使って作業効率を上げられる&人にも頼めるという話を聞きチャレンジしました。
とりあえずVBE(?)で作ってみましたが実行するとエラーが発生してしまいます。
「SubまたはFunctionが定義されていません」というメッセージが表示されます。
プログラム文は以下の通りです。
Sub Df算出()
'
'
'
'2009/11/2 **研 **** 作成
'
'
'
'Visual BASICによるプログラミング
'****による画像解析結果から、Df算出に必要な種々のパラメータを算出するExcelマクロである
'算出される値→dp、Ap、n、ln(Rg/dp)、ln(n)
'
'解析結果から基本的なパラメータを求めるだけであり、まだまだ改良の余地があるマクロである
'誤りが発覚した時、解析内容が変わった時、処理内容を追加したい時など
'ぜひこのマクロを参考にして、改良して活用して頂けると幸いである
'
'
'解析結果、計測回数、粒径の入力が済んでいる事を確認する
'
If vbNo = MsgBox("解析結果のペースト、列K、Мへの入力は済んでいますか?", vbYesNo) Then
Exit Sub
'
'
'変数の型/宣言
'X=ラベル数
'
Dim X As Integer
'
Name = "ラベル数入力ボックス"
X = InputBox("解析画像のラベル数を入力して下さい", Title = Name)
'
'
'全てのラベルについて繰り返し処理
'
'変数の型/宣言
'i=カウンタ変数
'
'
Dim i As Integer
'
'
For i = 3 To X + 2
'
'
Cells(i, 12) = Cells(i, 11) - Cells(i - 1, 11) 'ラベルiにおける計測回数を列Lに出力
'
'稀に生じるバグ(?)データは処理せず弾く
'
If Cells(i, 12) = 0 Then
GoTo Label
'
Else
'
'ラベルiにおけるdpを列Nに出力
'
Cells(i, 14) = (Cells(i, 13) * Cells(i, 11) - Cells(i - 1, 13) * Cells(i - 1, 11)) / Cells(i, 12)
'
'ラベルiにおけるApを列Оに出力
'
Cells(i, 15) = (Pi() * Cells(i, 14) ^ 2) / 4 'Ap=πdp^2/4
'
'ラベルiにおけるDf算出用のnを列Pに出力
'
Cells(i, 16) = (Cells(i, 9) / Cells(i, 15)) ^ 1.09 'n=(A/Ap)^1.09
'
'ラベルiにおけるDfグラフの横軸を算出
'
Cells(i, 17) = Ln(Cells(i, 8) / Cells(i, 14)) 'ln(Rg/dp)
'
'ラベルiにおけるDfグラフの縦軸を算出
'
Cells(i, 18) = Ln(Cells(i, 16)) 'ln(n)
'
End If
'
Label 'バグデータを弾いた際に用いるラベル
Next i
'
'
'
'これで、1枚の画像解析結果からDfを算出するのに最低限必要な計算は完了しました
'
'マクロを改良して、より解析作業効率を向上させ、研究に励んで下さい
'この後に、dp分布、n分布を作成させる
'新しく、解析に有効なパラメーターを加える
'なども、とても有効かも知れません
End Sub
ここまでがプログラム文です。
コメント文中の名前、パラメータ名などは伏せました。
1年次からプログラムに関する授業だけはどうしても苦手で、PCに関する基本用語もあまり分かりません。
なら、なぜマクロ挑戦したんだ?という感じですが、苦手意識を克服したかったんです。
マクロ使い慣れている方、簡単な言葉でアドバイスを頂けると嬉しいです。
長くなりましたが、よろしくお願いします。
お礼
勉強不足でした。 ワークシート関数はそのまま使えないんですね。 他にもアルゴリズムで少し問題を発見しましたが(研究室内の事情) n-junさんの優しいアドバイスのおかげで完成しました。 質問してから、ほんの数時間で解決&完成出来て嬉しいです。 他にも複数のマクロを作成中なのですが上手くいきそうです!! 本当にありがとうございました!!!!