Excel VBA質問箱 IV

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

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


12909 / 13646 ツリー ←次へ | 前へ→

【7897】入力規則とWorksheet_SelectionChange Massan 03/9/22(月) 19:04 質問
【7899】Re:入力規則とWorksheet_SelectionChange BOTTA 03/9/22(月) 21:04 回答
【7929】Re:入力規則とWorksheet_SelectionChange しのしの 03/9/24(水) 14:04 回答
【7935】Re:入力規則とWorksheet_SelectionChange BOTTA 03/9/24(水) 15:14 回答
【8039】Re:入力規則とWorksheet_SelectionChange Massan 03/9/27(土) 12:55 お礼

【7897】入力規則とWorksheet_SelectionChange
質問  Massan  - 03/9/22(月) 19:04 -

引用なし
パスワード
   失礼致します。どなたかご存知でしたら教えていただきたいのですが。
入力規則で選んだ値に応じて、他のセルの入力規則のプロパティを変更するということを行いたいと思い、「Worksheet_SelectionChange」で出来るかとやってみましたができませんでした。入力規則からの値入力では「Worksheet_SelectionChange」は出来ないのでしょうか。できるとしたらどのようにすれば宜しいのでしょうか。

【7899】Re:入力規則とWorksheet_SelectionChange
回答  BOTTA  - 03/9/22(月) 21:04 -

引用なし
パスワード
   Massanさん、こんばんは。
ThisWorkbookに
Private Sub Workbook_Open()
  With Range("A1").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="1〜10,11〜20,21〜30"
    .IgnoreBlank = True
    .InCellDropdown = True
    .ShowError = True
  End With
End Sub

Sheet1に
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strS As String, strE As String
If Target.Address = Range("B1").Address Then
  Select Case Range("A1").Value
    Case "1〜10"
      strS = "1": strE = "10": Valid_do strS, strE
    Case "11〜20"
      strS = "11": strE = "20": Valid_do strS, strE
    Case "21〜30"
      strS = "21": strE = "30": Valid_do strS, strE
    Case Else
      Range("B1").Validation.Delete: Exit Sub
  End Select
End If
End Sub
Private Sub Valid_do(S As String, E As String)
  With Range("B1").Validation
    .Delete
    .Add Type:=xlValidateWholeNumber, _
      AlertStyle:=xlValidAlertStop, _
      Operator:=xlBetween, Formula1:=S, Formula2:=E
    .IgnoreBlank = True
    .ShowError = True
  End With
End Sub
コピペして保存して閉じてから再度開いて試してみて。

【7929】Re:入力規則とWorksheet_SelectionChange
回答  しのしの  - 03/9/24(水) 14:04 -

引用なし
パスワード
   Massan さん、こんにちは。
Massan さんの文意からすると、Worksheet_Changeイベントなのではないでしょうか?
見当違いならごめんなさい。


Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
ワークシートで選択範囲を変更したときに発生します。

Private Sub Worksheet_Change(ByVal Target As Range)
ワークシートのセルが、ユーザーまたは外部リンクで変更されたときに発生します。

【7935】Re:入力規則とWorksheet_SelectionChange
回答  BOTTA  - 03/9/24(水) 15:14 -

引用なし
パスワード
   しのしのさん、Massanさん、こんにちは。
>Massan さんの文意からすると、Worksheet_Changeイベントなのではないでしょうか?
そうですよね。ご指摘ありがとうございます。
ちょっと修正します。
<Sheet1>モジュールに
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strS As String, strE As String
If Target.Address = Range("A1").Address Then
  Select Case Range("A1").Value
    Case "1〜10"
      strS = "1": strE = "10": Valid_do strS, strE
    Case "11〜20"
      strS = "11": strE = "20": Valid_do strS, strE
    Case "21〜30"
      strS = "21": strE = "30": Valid_do strS, strE
    Case Else
      Range("B1").Validation.Delete: Exit Sub
  End Select
End If
End Sub
Private Sub Valid_do(S As String, E As String)
  With Range("B1").Validation
    .Delete
    .Add Type:=xlValidateWholeNumber, _
      AlertStyle:=xlValidAlertStop, _
      Operator:=xlBetween, Formula1:=S, Formula2:=E
    .IgnoreBlank = True
    .ShowError = True
  End With
End Sub
として下さい。
A1の値により、B1の入力規則の範囲が変わります。

【8039】Re:入力規則とWorksheet_SelectionChange
お礼  Massan E-MAIL  - 03/9/27(土) 12:55 -

引用なし
パスワード
   ご回答いただいてから時間が経ってしまってすみません。
Worksheet_SelectionChangeとWorksheet_Changeの違いが
いまいち分らなかったのですが、分りました。ありがとうございます。

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