Excel VBA 引数が2個のマクロの呼び出し方
ExcelのVBAで、
シート上のボタンがクリックされた時に呼び出す
マクロ(プロシージャ)の引数が1個の時は、
コード1のようにできましたが、
引数が2個ある時は、コード2のように記述しても、
ボタンをクリックするとエラーになりますが、
【?】の部分をどのように記述すればよいのでしょうか。
(Windows10,Excel2010)
-------------------コード1----------------------------------------
Sub test1()
Dim row As Integer
Dim wave_file_path As String
For row = 1 To 2
wave_file_path = ThisWorkbook.Worksheets("Sheet1").Cells(row, 1).Value
Call ボタン作成(row, wave_file_path)
Next row
End Sub
Sub ボタン作成(ByVal row As Integer, ByVal wave_file_path As String)
Dim cell_loc As String
cell_loc = ThisWorkbook.Worksheets("Sheet1").Cells(row, 3).Address
ThisWorkbook.Worksheets("Sheet1").Select
With ActiveSheet.Buttons.Add(Range(cell_loc).Left, _
Range(cell_loc).Top, _
Range(cell_loc).Width, _
Range(cell_loc).Height)
.name = "ボタン_" & cell_loc
.OnAction = "'WAVE_PLAY """ & wave_file_path & "" & "'"
.Characters.Text = "再生"
End With
End Sub
Sub WAVE_PLAY(ByVal wave_file_path As String)
If Dir(wave_file_path) = "" Then
MsgBox wave_file_path & vbCrLf & "がありません。", vbExclamation
Exit Sub
End If
Shell "C:\Program Files\Windows Media Player\wmplayer.exe /play /close " & wave_file_path
End Sub
-------------------------------------------------------------------
-------------------コード2----------------------------------------
Sub test2()
Dim row As Integer
Dim wave_file_path As String
For row = 1 To 2
wave_file_path = ThisWorkbook.Worksheets("Sheet1").Cells(row, 1).Value
Call ボタン作成(row, wave_file_path)
Next row
End Sub
Sub ボタン作成(ByVal row As Integer, ByVal wave_file_path As String)
Dim cell_loc As String
cell_loc = ThisWorkbook.Worksheets("Sheet1").Cells(row, 3).Address
ThisWorkbook.Worksheets("Sheet1").Select
With ActiveSheet.Buttons.Add(Range(cell_loc).Left, _
Range(cell_loc).Top, _
Range(cell_loc).Width, _
Range(cell_loc).Height)
.name = "ボタン_" & cell_loc
.OnAction = "'WAVE_PLAY """ & wave_file_path & "" & "," & row & "'" <==【?】
.Characters.Text = "再生"
End With
End Sub
Sub WAVE_PLAY(ByVal wave_file_path As String, ByVal row As Integer)
If Dir(wave_file_path) = "" Then
MsgBox wave_file_path & vbCrLf & "がありません。", vbExclamation
Exit Sub
End If
Shell "C:\Program Files\Windows Media Player\wmplayer.exe /play /close " & wave_file_path
ThisWorkbook.Worksheets("Sheet1").Cells(row, 4).Value = "再生済"
End Sub
-------------------------------------------------------------------
補足
同じく「#VALUE!」エラーになります。 エラーが発生するファイルを iCloud Drive に保存して iPad や iPhone の Excel で開くと「#VALUE!」エラーは発生せず正しく表示されます。 また、別の Mac の Excel for Mac 2011 では正しく動作しました。 以上のことから、たぶん問題の発生している Mac 固有の問題で、たぶん再インストールすれば直るのだろうと思いました。 ただ、CELL 関数を使用せず ROW 関数を使う(例えば「=ROW(B6)」)と問題なく動作します。 実用上はそれで問題ありませんので、これで問題を回避しようと思います。 早々とご回答いただきありがとうございました。