- ベストアンサー
エクセルVBA セルの移動について
- エクセルVBAでA1~A8のセルに入力された文字に応じてB1~B8にセルを移動させる方法を教えてください。
- VBAを使用して、A1~A8のセルに特定の文字が入力された場合、それに対応するBのセルに移動する方法を教えてください。
- エクセルVBAで、A1~A8のセルに「あ」が入力された場合はB1に、A2に「あ」が入力された場合はB2にセルを移動させる方法を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
これでどうでしょうか? 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 これをシート名のところを右クリック「ソースの表示」で表示されるソースを記述するウインドウにコピペしてみてください。
その他の回答 (3)
- MSZ006
- ベストアンサー率38% (390/1011)
#3ですが、回答の最後のほう「ソースの表示」ではなくて「コードの表示」でした。すみません。
- MSZ006
- ベストアンサー率38% (390/1011)
このようなものでどうでしょうか? 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
お礼
すいません それについてもう少し質問なんですが、 この構文を、どの辺につけたらうまく行くでしょうか。 いろいろ試したんですけど、For~Nextの間でやっぱりA1へ入力してもB2へ移動してしますんです。一瞬はB1へ移動するのは見えるんですけどね;;
補足
A1へ入力したらA8でした。すいません
- norakuma
- ベストアンサー率29% (293/977)
それぞれのCaseの一番下の end with の下の行に Selection.Cells(i, 3).Activate じゃだめですかね? 試してないけど。
お礼
うわ~ ありがとうございます!! 完璧です!! これでやっと望むものが出来そうです。本当にありがとうございました