入力規則を設定する:Excel VBA入門 |
スポンサードリンク | |
A2が「野菜」のとき | A2が「肉」のとき | A2が「果物」のとき |
Sub name_1() Dim lCol As Long, lRow As Long Dim i As Long, nName As String On Error Resume Next With Sheets("Sheet2") lCol = .Range("A1").End(xlToRight).Column ActiveWorkbook.Names("項目リスト").Delete ActiveWorkbook.Names.Add Name:="項目リスト", _ RefersTo:=.Range(.Cells(1, 1), .Cells(1, lCol)) '----名前の定義 For i = 1 To lCol lRow = .Cells(1, i).End(xlDown).Row nName = .Cells(1, i).Value ActiveWorkbook.Names(nName).Delete .Range(.Cells(1, i), .Cells(lRow, i)).CreateNames Top:=True Next i End With End Sub |
A2セルの状態 | B2セルの状態 |
Sub Macro1() name_1 With Range("A2").Validation '--入力規則を削除 .Delete '--入力規則を設定 .Add Type:=xlValidateList, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, _ Formula1:="=項目リスト" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .IMEMode = xlIMEModeNoControl .ShowInput = True .ShowError = True End With '--B2セルへ入力規則を設定 With Range("B2").Validation .Delete .Add Type:=xlValidateList, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, _ Formula1:="=IF(A2="""",A2,INDIRECT(A2))" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .IMEMode = xlIMEModeNoControl .ShowInput = True .ShowError = True End With End Sub |
Sub Macro1() name_1 With Range("A2").Validation '--入力規則を削除 .Delete '--入力規則を設定 .Add Type:=xlValidateList, _ Formula1:="=項目リスト" End With '--B2セルへ入力規則を設定 With Range("B2").Validation .Delete .Add Type:=xlValidateList, _ Formula1:="=IF(A2="""",A2,INDIRECT(A2))" End With End Sub |
→ |
Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Range If Not (Application.Intersect(Target, Range("A2:B2")) Is Nothing) Then name_1 Application.EnableEvents = False If Target.Address() = "$A$2" Then Set c = Sheets("Sheet2").Range(Target.Value).Find(Range("B2").Value, lookat:=xlWhole) If c Is Nothing Then Range("B2").Value = "" End If End If Application.EnableEvents = True End If End Sub |
Sub Macro2() name_1 With Range("A2:A10").Validation '--入力規則を削除 .Delete '--入力規則を設定 .Add Type:=xlValidateList, _ Formula1:="=項目リスト" End With '--B2セルへ入力規則を設定 With Range("B2:B10").Validation .Delete .Add Type:=xlValidateList, _ Formula1:="=IF(A2="""",A2,INDIRECT(A2))" End With End Sub |
Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Range If Not (Application.Intersect(Target, Range("A2:B10")) Is Nothing) Then name_1 Application.EnableEvents = False If Target.Column = 1 Then If Target.Value = "" Then Target.Offset(0, 1).Value = "" Else Set c = Sheets("Sheet2").Range(Target.Value).Find(Target.Offset(0, 1).Value, lookat:=xlWhole) If c Is Nothing Then Target.Offset(0, 1).Value = "" End If End If End If If Target.Column = 2 Then If Target.Value = "" Then Target.Offset(0, -1).Value = "" End If End If Application.EnableEvents = True End If End Sub |
定数 | 値 | 内容 |
xlValidateInputOnly | 0 | すべての値 引数 AlertStyle、引数 Formula1、または引数 Formula2 を使用します。 |
xlValidateWholeNumber | 1 | 整数 |
xlValidateDecimal | 2 | 小数点 |
xlValidateList | 3 | リスト 引数 Formula1 を必ず指定します。 |
xlValidateDate | 4 | 日付 |
xlValidateTime | 5 | 時刻 |
xlValidateTextLength | 6 | 文字列 |
xlValidateCustom | 7 | ユーザー設定 引数 Formula1 を必ず指定します。 |
定数 | 値 | 内容 |
xlValidAlertStop | 1 | 停止 |
xlValidAlertWarning | 2 | 注意 |
xlValidAlertInformation | 3 | 情報 |
定数 | 値 | 内容 |
xlBetween | 1 | Formula1とFormula2の間 |
xlNotBetween | 2 | Formula1とFormula2の間以外 |
xlEqual | 3 | Formula1と等しい |
xlNotEqual | 4 | Formula1と異なる |
xlGreater | 5 | Formula1より大きい |
xlLess | 6 | Formula1より小さい |
xlGreaterEqual | 7 | Formula1以上 |
xlLessEqual | 8 | Formula1以下 |
定数 | 値 | 内容 |
xlIMEModeNoControl | 0 | コントロールなし |
xlIMEModeOn | 1 | オン |
xlIMEModeOff | 2 | オフ (英語モード) |
xlIMEModeDisable | 3 | 無効 |
xlIMEModeHiragana | 4 | ひらがな |
xlIMEModeKatakana | 5 | カタカナ |
xlIMEModeKatakanaHalf | 6 | カタカナ (半角) |
xlIMEModeAlphaFull | 7 | 全角英数字 |
xlIMEModeAlpha | 8 | 半角英数字 |
スポンサードリンク
PageViewCounter
Since2006/2/27