アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になっております。

大きな入力表があって、入力箇所(セル)が飛びとびになっているので、必要なセルに入力して確定したら自動で次々と入力箇所にカーソルを移動させたいのですが。

イメージとしては入力項目が一杯ある申請書の入力箇所にEnterキーで次々に移動していく感じです。
途中で別シートに飛ぶ場合もあります。

ハイパーリンクのように?特定のセルをクリックして移動ではなく、入力後の確定(ENTER)で移動させたいのです。
宜しくお願いします。

質問者からの補足コメント

  • つらい・・・

    早々のご回答ありがとうございます。
    マクロでできそうな気がしての質問なのですが、当方全く知見なく困っています。

    ご回答のchangeイベントなるものを調べてみて、確かにできそうな気がするのですが、「色を変える」等の例があるものの、セル移動に関するコードの記載例がなく困って(止まって)しまいました。

    もしできれば,A1からB5,更にB5からZ10に飛ぶ例をご教授いただけないでしょうか?
    おんぶにだっこですみません。

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/05/29 08:58

A 回答 (8件)

シート保護を使用すればできるけど…それはご存知ですか?



①セルを右クリックして → セルの書式設定 → 「保護」タブで「ロック」のチェックを外す。
②シートのタブを右クリックし → シートの保護 → 
  「ロックされたセル範囲の選択」のチェックを外す
  「ロックされていないセル範囲の選択」のチェックを入れる

移動方向は、オプション 詳細設定 編集オプション で指定されたものになります。
(右側に順に移動して行って、入力可能なセルが無くくなったら下の行に移動する、みたいになります。)
縦横無尽に移動先を設定することはできません。

あちこちにセルを移動するのであれば、
入力用シートを作ってしまい、その情報を参照する形で他のシートに表示させるという方法もありますね。
=入力用!A2
みたいに。
    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございます。

なるほど!
計算式の入っているセルの保護と入力セルの指定は汎用しているのですが、セルの選択に使用する発想がありませんでした。
早速実際の表で試してみます。(試さなくても分かる気がしますが)
目から鱗でした。

=入力用!A2は最後の手段と思っていましたが、これだと別の問題が見えているので(マクロでなら)何とかならないかと質問してみました。

お礼日時:2020/05/29 09:28

複数のシートがあるようで…



少し手を加えましたが、説明も手抜きで申し訳ないのですが、入力セルの検索部分をfunctionに外出ししてしまえばもう少しスッキリします。

Private Sub Worksheet_Change (ByVal Target As Range)

If str Preval <> Target. Value Then ‘セルの値が変わっていたら
For iCntCol = iPreCol + 1 To 50 ‘とりあえずここではMAX列、行それぞれ50とします。
For iCntrow = iPreRow To 50
If Cells(iCntCol, i CntRow). Interior. Color Index = 6 Then ‘セル背景が黄色の時
Cells(i CntCol, i CntRow). Select ‘選択する
Exit Sub
End If
Next
iPreCol = 0
Next

‘次のシートがあれば次のシートへ…やった事がないので上手く移動してくれるかどうか…
If ActiveSheet.Index <> Worksheets.Count Then
ActiveSheet.Next.Activate
‘最初の入力セルに移動するならココに上のような処理を書く
End If

End If

End Sub
    • good
    • 0
この回答へのお礼

これも手当たり次第に種々試してみましたが先回答とおなじ結果でした。
確認が遅れ何度もお手数をおかけし申し訳ありませんでした。

やはり本件は保護が使いやすく変更への対応に優れている(当方のレベルにあっている)と思います。

お礼日時:2020/06/01 08:25

シート保護の方法は眼から鱗でしたね!


そのやり方が一番良いかもしれません。


乗り掛かった船ですので、マクロの方も記載させていただきます。
帰りの電車で携帯のメモ帳打ち込んだので、不備がありましたら申し訳ありません。
適当に調整していただけたらと思います。

入力するセルに色なりコメントなりでマーカーつけておけば、フォーマットが変わってもマーカーの位置を変えたり増やしたりすれば簡単にメンテナンスできると思いました。
ここでは入力セルが黄色の前提で記述しています。


Private i PreCol As Integer
Private i PreRow As Integer
Private strPreVal As String

Private Sub Worksheet_Change (ByVal Target As Range)

If str Preval <> Target. Value Then ‘セルの値が変わっていたら
For iCntCol = iPreCol + 1 To 50 ‘とりあえずここではMAX列、行それぞれ50とします。
For iCntrow = iPreRow To 50
If Cells(iCntCol, i CntRow). Interior. Color Index = 6 Then ‘セル背景が黄色の時
Cells(i CntCol, i CntRow). Select ‘選択する
Exit Sub
End If
Next
iPreCol = 0
Next
End If

End Sub

Private Sub Worksheet_SelectionChange (ByVal Target As Range)

‘セルを選択したときにセル情報を保持する
iPreCol = ActiveCell. Column
iPreRow = ActiveCell. Row
strPreVal = ActiveCell. Value

End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

動作確認してみたのですが、うまく動かず。。。。
当方のレベルでは使いこなせないレベルだと思われます。

お手数をおかけし申し訳ありませんでした。

お礼日時:2020/06/01 08:19

そんなことにいちいちマクロを使わなくても 入力欄を別に作れば


解決します。

縦一列に入力欄を作っておいて そのセルに入力したものを該当す
る箇所に数式でリンクすればいいでしょう。

印刷用書式に直接入力して良いことなんて欠片もありません。
    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございます。
質問に発生するであろう課題を明示していないことをお詫びします

#No4さんの回答に記載したように、
=入力用!A2は最後の手段と思っていましたが、これだと別の問題が見えているので(マクロでなら)何とかならないかと質問してみました。

お礼日時:2020/05/29 11:49

入力するセルが決まっているなら、入力順に各セルをCtrlを押しながら選択していき全部選択した状態で名前ボックスに何か名前をつければ次からは名前ボックスからその名前を選べばそのセルが選択されます。


入力したらEnterを押せば次のセルにアクティブセルが移動します。
選択した順に移動するので変則的な移動にも対応できます。ただし入力中に別のセルをクリックするなどで選択が外れると移動ができなくなりますが。
(まぁ、また名前を選べばいいんですが開始位置が元にもどる)
    • good
    • 0
この回答へのお礼

名前の管理はほとんど使ったことが無く思いつきませんでした。

やってみて納得です。
名前の選択をマクロボタンにして、「入力開始」にしておけば期待の動きが得られました。

このマクロに、全部の入力セルの自動削除、を追加してバッチリです。
最終的にはpdfファイルでの保存~メール送信(既存マクロあり)までを1ボタンもしくは単位操作毎のマクロボタン化すれば完成です。

後は先のご回答の非保護セルの選択とどちらにするか入力者に確認して決めます。

お礼日時:2020/05/29 13:09

以下は参考になりませんか?


https://www.forguncy.com/blog/20170823_form
    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございます。

面白い! こんな機能があったとは。
但し、今回の期待する動きとは違っていますが、非常に参考になりました。
何かの機会に使わせていただきます。

お礼日時:2020/05/29 09:17

それを実現するにはマクロが必要になります。



changeイベントで次のセルにカーソルを移動する処理を記述するイメージです。
これを機会に挑戦してみては如何でしょうか。
この回答への補足あり
    • good
    • 0
この回答へのお礼

何とかコードを入手したのですが、シート毎に移動方向を変える必要があるので、これも何とか解決できたのですが、残念ながらこの設定が何故か他のシートのカーソルの動きに反映されてしまいます。

コードは目的のシートに書き込んでいるのですが。。。
次々問題が発生します。

お礼日時:2020/05/29 10:33

TABキー使えばできる

    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございます。

TABキーでA1から希望するB5に飛ぶ方法があるのでしょうか?
当方の希望する動きは上記を連続的に移動するというもう少し複雑な動きだと思うのですが。

お礼日時:2020/05/29 09:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!