• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA セルの移動について)

エクセルVBA セルの移動について

このQ&Aのポイント
  • エクセルVBAでA1~A8のセルに入力された文字に応じてB1~B8にセルを移動させる方法を教えてください。
  • VBAを使用して、A1~A8のセルに特定の文字が入力された場合、それに対応するBのセルに移動する方法を教えてください。
  • エクセルVBAで、A1~A8のセルに「あ」が入力された場合はB1に、A2に「あ」が入力された場合はB2にセルを移動させる方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.3

これでどうでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer Dim rg As Range Dim sw As Boolean sw = False For i = 1 To 8 If Target.Address = Cells(i, 1).Address Then Cells(i, 2).Activate Set rg = Cells(i, 2) sw = True End If Next i If sw = False Then Exit Sub Select Case Target Case "あ" rg.Activate CutCopyMode = False With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=$F$1:$F$10" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .IMEMode = xlIMEModeNoControl .ShowInput = True .ShowError = True End With Case "い" rg.Activate CutCopyMode = False With Selection.Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=$G$1:$G$10" .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .IMEMode = xlIMEModeNoControl .ShowInput = True .ShowError = True End With Case Else rg.Activate CutCopyMode = False With Selection.Validation .Delete .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _ :=xlBetween .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .IMEMode = xlIMEModeNoControl .ShowInput = True .ShowError = True End With End Select End Sub これをシート名のところを右クリック「ソースの表示」で表示されるソースを記述するウインドウにコピペしてみてください。

nanny
質問者

お礼

うわ~ ありがとうございます!! 完璧です!! これでやっと望むものが出来そうです。本当にありがとうございました

その他の回答 (3)

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.4

#3ですが、回答の最後のほう「ソースの表示」ではなくて「コードの表示」でした。すみません。

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.2

このようなものでどうでしょうか? Private Sub Worksheet_Change(ByVal Target As Range)  Dim i As Integer  For i = 1 To 8   If Target.Address = Cells(i, 1).Address Then    Cells(i, 2).Activate   End If  Next End Sub

nanny
質問者

お礼

すいません それについてもう少し質問なんですが、 この構文を、どの辺につけたらうまく行くでしょうか。 いろいろ試したんですけど、For~Nextの間でやっぱりA1へ入力してもB2へ移動してしますんです。一瞬はB1へ移動するのは見えるんですけどね;;

nanny
質問者

補足

A1へ入力したらA8でした。すいません

  • norakuma
  • ベストアンサー率29% (293/977)
回答No.1

それぞれのCaseの一番下の end with の下の行に Selection.Cells(i, 3).Activate じゃだめですかね? 試してないけど。