###前提・実現したいこと
Excelのワークシートに、こういうような、人名と守備位置が一覧になっている表を作っておいて
Excelシート名「選手一覧」 A B 荒木 二塁 高橋 三塁 藤井 左翼 平田 右翼 森野 一塁 大島 中堅 福 投手 桂 捕手
定数として以下のように定義します。
VBA
1const 投手 = "1" 2const 捕手 = "2" 3const 一塁 = "3" 4const 二塁 = "4" 5const 三塁 = "5" 6const 遊撃 = "6" 7const 右翼 = "7" 8const 中堅 = "8" 9const 左翼 = "9" 10const 不明 = "0"
これで、たとえば
「大島」
って入力したら
「8」
って返ってくるようにしたいのです。
「大島」って入れたら「中堅」って返ってくるのは、こんなのを書きました。
これで「findDP("大島")」ってやったら「"中堅"」って返ってきます。
VBA
1Function findDP(men) 2 3 Dim dbSh As Worksheet 4 Set dbSh = ThisWorkbook.Worksheets("選手一覧") 5 dbSh.Activate 6 7 Dim tmpStr As String 8 Dim dbEndRow As Long 9 dbEndRow = dbSh.Cells(Rows.Count, 1).End(xlUp).Row 10 11 Const dbFindCol As Integer = 2 ' 戻り値にする列 12 13 'Match関数で検索する範囲とIndex関数で返答する範囲を指定する 14 Dim dbRng, codeRng As Range 15 Set codeRng = Range(dbSh.Cells(2, dbFindCol), dbSh.Cells(dbEndRow, dbFindCol)) 16 Set dbRng = Range(dbSh.Cells(2, 1), dbSh.Cells(dbEndRow, 1)) 17 18 'Match関数で、引数で指定した人名が入力されている行数を求めた後、Index関数で対象行に格納された守備位置を取り出す 19 tmpStr = Application.WorksheetFunction.Index(codeRng, Application.WorksheetFunction.Match(men, dbRng, 0), 1) 20 On Error Resume Next 21 If Err.Number <> 0 Then ' みつからなければ「不明」と返す 22 tmpStr = "不明" 23 Err.Clear 24 End If 25 26 findDP = tmpStr 27 28End Function
###発生している問題
この返ってきた「中堅」を、定数として扱って「8」と読むためにはどうしたらいいか
というところがわかりません。
###補足情報(言語/FW/ツール等のバージョンなど)
Win10、Excel2016です。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/18 07:06 編集