電子書籍の厳選無料作品が豊富!

よろしくお願いします
いつもgooの皆さんには大変お世話になっております
エクセルは2013です

下記のマクロを標準モジュールに置いて、Sub Worksheet_Calculate() からCallしたいのですが
その方法を教えてください

下記が移すマクロです

code_txt = Range("B" & gyou).Text
code_res = Left(code_txt, 1)
For code_i = 2 To Len(code_txt)
  code_res = code_res & " " & Mid(code_txt, code_i, 1)
  '機器番号に半角入れ   " "は半角の空白
  'その他の処理 
Next code_i

ここまでやりました

標準モジュールで
Sub code_space() として

Dim code_i As long
Dim gyou As long 'gyou:行

code_txt = Range("B" & gyou).Text
code_res = Left(code_txt, 1)
For code_i = 2 To Len(code_txt)
  code_res = code_res & " " & Mid(code_txt, code_i, 1)
  '機器番号に半角入れ   " "は半角の空白
  'その他の処理 
Next code_i

End Sub

ところが code_txt が変数が定義されていませんのエラーになります
まだ、マクロのCallがよくわかっていません

よろしくお願いします

A 回答 (1件)

Sub Worksheet_Calculate()の中が全て提示されてないので、想像になります。


1)gyouはWorksheet_Calculateの中で定義されていて、現在処理中の行である。
2)code_resはWorksheet_Calculateの中で定義されていて、
最終的に取得したいデータであり、これを code_spaceの呼び出し後、Worksheet_Calculateで使用したい。
3)code_txtはWorksheet_Calculateの中で定義されているが、作業用のデータの為、
Worksheet_Calculateでは、使わなくても良い。

上記のように見受けられましたので、その前提での回答です。
以下のようにしてください。
------------------------------------
Public Sub code_space(ByVal gyou As Long, ByRef code_res As String)
Dim code_i As Long
Dim code_txt As String
code_txt = Range("B" & gyou).Text
code_res = Left(code_txt, 1)
For code_i = 2 To Len(code_txt)
code_res = code_res & " " & Mid(code_txt, code_i, 1)
'機器番号に半角入れ   " "は半角の空白
'その他の処理
Next code_i
End Sub
------------------------------------------------
code_spaceの呼び出しは、
Call code_space(gyou, code_res)
で行います。
    • good
    • 0
この回答へのお礼

休日に親切に教えていただきましてありがとうございました
また、教えてもらう立場なのに説明不足が多々ありました

tatsu99さんの想像通りです
お陰様でうまくできました

先日Targetの受け渡しをgooの方に教えてもらって覚えたのですが
変数渡しと受けのパターンが変わると全く手に負えません

少しづつ勉強します
ありがとうございました

お礼日時:2016/12/24 13:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!