Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


39139 / 76732 ←次へ | 前へ→

【42712】Re:文字列を数値に変換する方法について
回答  Hirofumi  - 06/9/19(火) 22:20 -

引用なし
パスワード
   こんなのでも善いかも?

Option Explicit

Public Sub Sample()

  'データの列数(I列〜AC列の21列)
  Const clngColumns As Long = 21
  
  Dim i As Long
  Dim vntData As Variant
  Dim vntUs As Variant
  Dim vntJp As Variant
  
  'USサイズの一覧
  vntUs = Array("4", "4H", "5", "5H", "6", "6H", "7", _
          "7H", "8", "8H", "9", "9H", "10", "F")
  '対応するサイズの一覧
  vntJp = Array("22.5", "23", "23.5", "24", "24.5", "25", "25.5", _
          "26", "26.5", "27", "27.5", "28", "28.5", "フリー")
  
  '範囲を配列に取得
  With Worksheets("靴").Range("I2")
    'データを配列に取得
    vntData = .Resize(, clngColumns).Value
    'USサイズを対応サイズに変換
    For i = 1 To UBound(vntData, 2)
      vntData(1, i) = SizeConv(vntData(1, i), vntUs, vntJp)
    Next i
    '配列をシートに出力
    .Resize(, clngColumns).Value = vntData
  End With
  
  MsgBox "処理が完了しました", vbInformation
  
End Sub

Private Function SizeConv(vntValue As Variant, vntUs As Variant, vntJp As Variant) As Variant

  Dim i As Long
  Dim lngMax As Long
  
  '添え字の最大値
  lngMax = UBound(vntUs)
  
  'USサイズに合致する物が有るか比較
  For i = 0 To lngMax
    '合致した場合Forを抜ける
    If StrComp(vntValue, vntUs(i), vbTextCompare) = 0 Then
      Exit For
    End If
  Next i
  
  '合致した場合
  If i <= lngMax Then
    '対応するサイズを返す
    SizeConv = vntJp(i)
  Else
    '引数を返す
    SizeConv = vntValue
  End If
  
End Function
0 hits

【42657】文字列を数値に変換する方法について ぴい 06/9/18(月) 15:35 質問
【42659】Re:文字列を数値に変換する方法について かみちゃん 06/9/18(月) 15:58 発言
【42685】Re:文字列を数値に変換する方法について ぴい 06/9/19(火) 12:54 質問
【42689】Re:文字列を数値に変換する方法について ハチ 06/9/19(火) 14:03 発言
【42686】Re:文字列を数値に変換する方法について Kein 06/9/19(火) 13:14 回答
【42712】Re:文字列を数値に変換する方法について Hirofumi 06/9/19(火) 22:20 回答
【42727】Re:文字列を数値に変換する方法について ぴい 06/9/20(水) 10:24 お礼

39139 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free