'========================================================================================= ' 233 HLOOKUPで上端行から検索する '----------------------------------------------------------------------------------------- '【ヒント】 ' このマクロは、おためし機能の動作用のコードを含んでいます。 ' ★★★の行またはサブプロシージャーが、タイトル機能に関係するコードです。 ' UserForm1にもコードがあり、標準モジュールのコードと連係して動作します '========================================================================================= ' ◆標準モジュールのコード◆ '----------------------------------------------------------------------------------------- Option Explicit Public タイトル As String Public スタイル As Long Public メッセージ As String Public 応答 As Variant '----------------------------------------------------------------------------------------- Sub おためしマクロ() おためしメッセージを準備する UserForm1.Show '★★★ ユーザーフォームを表示する End Sub '----------------------------------------------------------------------------------------- Private Sub おためしメッセージを準備する() Worksheets("Title").Select Range("O17").Select 'カーソルを定位置へ移動する タイトル = "500連発 第2弾 サンプルマクロ" スタイル = 64 'vbInformation End Sub '----------------------------------------------------------------------------------------- Sub Auto_Close() Application.DisplayAlerts = False '閉じる際に確認メッセージを出さない ActiveWorkbook.Close '現在開いているブックを閉じる End Sub '----------------------------------------------------------------------------------------- '========================================================================================= ' ◆UserForm1のコード◆ '----------------------------------------------------------------------------------------- Option Explicit Dim 検査値 As String Dim 標準報酬月額 As Long Dim 範囲 As Range Dim 行番号 As Long Dim 検索の型 As Boolean Dim 健康保険料率 Dim 健康保険料額 As Long Dim 分子 As Double Dim 分母 As Double Dim 境界 As Integer '----------------------------------------------------------------------------------------- Private Sub UserForm_Initialize() 'ユーザーフォームを初期化する TextBox1.Text = "" End Sub '----------------------------------------------------------------------------------------- Private Sub CommandButton1_Click() 標準報酬月額 = TextBox1.Text 'テキストボックスの値を取得する If OptionButton1.Value = True Then 'オプションボタン1がクリックされていたら 検査値 = "被保険者" 'HLOOKUPの引数をセットする Else 検査値 = "事業主" End If UserForm1.Hide 'ユーザーフォームを非表示にする ' Set 範囲 = Range("F8:G10") 行番号 = 2 検索の型 = False 健康保険料率 = Application.HLookup(検査値, 範囲, 行番号, 検索の型) '★★★ 境界 = Application.WorksheetFunction.Find("/", 健康保険料率) 分子 = Left(健康保険料率, Len(健康保険料率) - 境界) 分母 = Mid(健康保険料率, Len(健康保険料率) - 境界 + 2, Len(健康保険料率) - 境界) 健康保険料額 = 標準報酬月額 * 分子 / 分母 メッセージ = "標準報酬月額 " & 標準報酬月額 & "円の、" & Chr(13) & Chr(13) & _ 検査値 & "の健康保険料率は、" & 健康保険料率 & "で、" & Chr(13) & Chr(13) & _ "健康保険料額は、" & 健康保険料額 & "円です" 応答 = MsgBox(メッセージ, スタイル, タイトル) Unload Me 'ユーザーフォームを閉じる End Sub '=========================================================================================