• ベストアンサー

エクセルのセル移動

調べても分からなかったのでお願いします。 A列でリストを作成して「1」「2」「3」を選ばせるようにしたのですが 「1」を選んだ時にはH列までセルを移動させて「2」を選んだ時には O列までセルを移動させて「3」を選んだ時にはZ列までセルを移動させるようにしたいのですが これって Excel でできますか? 一応 2003です。 宜しくお願い致します。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

対象シートのWorksheet_Changeイベントに登録すれば可能だと思います。 ただし、複数セルで一度に値が変更された場合、一番最後のセルの移動が有効になります。 例:A1が1、A2が3に一度に変更された場合、Z2が選択される。 Private Sub Worksheet_Change(ByVal Target As Range)  Dim rOne As Range  For Each rOne In Target '複数セルが変更された場合を考慮   If rOne.Cells.Column = 1 Then '1列目のみ処理    Select Case (rOne.Value)     Case 1      Range("H" & rOne.Row).Select     Case 2      Range("O" & rOne.Row).Select     Case 3      Range("Z" & rOne.Row).Select     Case Else      '1,2,3以外のときの処理が必要ならここに    End Select   End If  Next rOne End Sub

ookami1969
質問者

お礼

ご回答ありがとう御座います!! ものの見事にカーソルが飛んでくれました!! ありがとう御座います!! ただ、1行目は上手く行ったのですが 2行目以降は反応してくれません。。。 >If rOne.Cells.Column = 1 Then '1列目のみ処理 >'1,2,3以外のときの処理が必要ならここに >End If この3行を消してしまったからでしょうか? 全くの初心者で申し訳ありません。 3000行全部に挿入したいのですが 常に一番したの「123のいずれか」が反映されればOKなんですけど、再度 ご教授いただけないでしょうか。 お忙しい中 大変 恐縮では御座いますが 何卒 宜しくお願い致します。

ookami1969
質問者

補足

度々すみません。 2行目以降も「1」と「2」は反応してくれてました。 でも「3」が選べない状態です。 リストでは123の全部表示されますが 3を選んでも2までしか表示されずに2の所にカーソルが移動して3を選んで3のセルには移動しない状況です。 ご教授の程 宜しくお願い致します。 ちなみに下記は自分で勝手に修正したコードです。 Private Sub Worksheet_Change(ByVal Target As Range) Dim rOne As Range For Each rOne In Target Select Case (rOne.Value) Case 1 Range("Q" & rOne.Row).Select Case 2 Range("Y" & rOne.Row).Select Case 3 Range("AA" & rOne.Row).Select Case Else End Select Next rOne End Sub 度々すみませんが何卒宜しくお願い致します。

その他の回答 (3)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

No.2です。 あのマクロはセルの値が変更された後の処理ですので、2行目以降で3が選択できないのは別な要因です。 何か入力規制をかけていませんか?

ookami1969
質問者

お礼

再登場 誠にありがとう御座います。 どうやら お察しの通り、リストの選択範囲に問題があったようです。 お騒がせして すみませんでした。。。 ご教示いただいたマクロで完璧に実施出来ました。 ありがとう御座いました!!

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

似たようなことで、考えてみた。 ーー セルに名前をつけます。 H1,O1,z1にセルH1,セルO1、セルZ1とでも名前をつけます。 準備として、z1の場合はz1セルを選択しておいて、名前ボックスにZ1と入れます。O1,H1の場合も同じ。 名前ボックスもドロップダウンなので、セルZ1をクリックすると、z1セルに飛びます。 ーー こういうのは本来VBAのイベントという考えを勉強しないと、出来ない。VBAの中級の課題です。 これでやるなら Sheet1のシートタブで右クリック 「コードの表示」をクリック 出てきた画面に下記を貼り付け。 下記のように短く中身3行できる。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub X = Array("", "H1", "O1", "Z1") Range(X(Target)).Select End Sub シートのA1で1,2,3 を選択すると所定セルに飛ぶ。 上記コードは、それなりに経験が詰まっているので、コードを少なくする技法、イベントという考えを含め、初心者にはすぐ思いつくのは無理だ。

ookami1969
質問者

お礼

すみません。。。 「お礼」の欄に記入してるつもりで「補足」の欄に記入していました。。 ご回答ありがとう御座います。 そうなんですか。。。。 中級レベルですね。。どうりで僕には解決の方法が分からないはずだ。。。 ちょっとドキドキしながらVBAの方をイジってみましたが、初心者のため案の定上手く行きませんでした。 ちょっと疑問に思ったのですが セルに名前を付けたのは どの辺で反映されているのでしょうか。 >X = Array("", "H1", "O1", "Z1") ここの部分を「セルの名前」に変更しないといけないのでしょうか? その場合「全角のカタカナ」でもOKですか? お忙しい中 大変申し訳ありませんが 何卒宜しくお願い致します。

ookami1969
質問者

補足

ご回答ありがとう御座います。 そうなんですか。。。。 中級レベルですね。。どうりで僕には解決の方法が分からないはずだ。。。 ちょっとドキドキしながらVBAの方をイジってみましたが、初心者のため案の定上手く行きませんでした。 ちょっと疑問に思ったのですが セルに名前を付けたのは どの辺で反映されているのでしょうか。 >X = Array("", "H1", "O1", "Z1") ここの部分を「セルの名前」に変更しないといけないのでしょうか? その場合「全角のカタカナ」でもOKですか? お忙しい中 大変申し訳ありませんが 何卒宜しくお願い致します。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

隣のセルを使ってハイパーリンクを貼る方法です。 =IF(A1="","",HYPERLINK("#Sheet1!"&IF(A1=1,"H",IF(A1=2,"O","Z"))&1))

ookami1969
質問者

お礼

ご回答ありがとう御座います。 関数にもハイパーリンクってあるんですね。 でも この数式をコピペしても >#Sheet1!&1 というような文字列が出て来るだけで希望するセルにカーソルは飛んでくれませんでした。 何か解決方法をご存知でしたら再度ご回答をお願い致します。

関連するQ&A