Excel VBA 質問スレッド №2050 (解決済)

Function内でシート名取得

投稿者 : y     投稿日時 : 2024/11/26(Tue) 17:05:38     OS : Windows 11     EXCEL : Excel 2021
Private sub内でワークシートをループしデータを配列に取り込むのですが、
Private Functionでエラーが発生した際に、ループしているワークシート名もメッセージに表示させたいのですが、可能でしょうか?
Private Functionでなく、Private sub内で全てを行うように変更する必要がありますか?
====================
Private Sub Button1_Click()

'ワークシート分ループ
For Each ws In wb.Worksheets
  ・
  ・ 
  ・
      '配列に記入内容取込
      arr(1) = ws.Cells(wrow, i).Value
      arr(2) = ret_ope(ws.Cells(wrow + 1, i).Value)
      arr(3) = ws.Cells(wrow + 1, i).Value

Next
  ・
  ・ 
  ・

End Sub

Private Function ret_ope(ope_name) As String

Dim tmpope As String

    Select Case True
        Case ope_name Like "*(D)*"
            tmpope = "Discharge"
        Case Else
            MsgBox "判定エラー。処理を終了します。【" & ope_name & "】"
            End
    End Select

ret_ope = tmpope

End Function

スポンサーリンク
[返信 1] Re : Function内でシート名取得
投稿者 : ごんぼほり     投稿日時 : 2024/11/26(Tue) 17:35:38
これでわかりますか?

Sub sample()
  ret_ope Worksheets(1).Range("A1")
End Sub

Private Function ret_ope(ope_name_cell As Range) As String
  Dim ope_name As String
  ope_name = ope_name_cell.Value
  MsgBox ope_name_cell.Parent.Name
End Function

[返信 2] Re : Function内でシート名取得
投稿者 : y     投稿日時 : 2024/11/27(Wed) 11:14:06
■[返信 1] ごんぼほりさん(2024-11-26 17:35:38)の記事

ご教授ありがとうございます!
無事エラー処理できました!

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2024-12-07 23:08:25 )
タイトルとURLをコピーしました