[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルをスキップさせる方法を教えてください』(エータロー)
矢印キーでシート内を移動する際、式の入ったセルなど、虫食い的に特定の個所のセルはポイントできないよう(スキップする)にさせるにはどうすればよいでしょうか。シートを保護すると、Tabキーによる移動では、ロックしたセルは飛ばしてくれますが、矢印キーを使うとロックしたセルに移動できてしまいます。どうやってもポイントさせない方法はないものでしょうか。
こんばんは
マクロになります
式の入ったセルを選択した場合、そのセルのひとつ右横に移動するマクロです。
シートモジュールに貼り付けてください。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.HasFormula = True Then
ActiveCell.Offset(0, 1).Select
End If
End Sub
もしよければ試してみてください。
(尋)
尋 様へ
早速ご教示いただきありがとうございます。
実は、入力帳票を作成していまして、ユーザーが入力することとなってるセルしかポイント出来ないようにしたいのです。
最初の質問内容では舌足らずで申し訳ありませんでした。つまり、ポイントさせたくないセルは、
数式の入ったセルだけでなく、文字の入ったセルや、空白のセルもあるのです。
ご教示いただいた内容から推し量ると、
ポイントさせたくないセルにはロックをかけておき、
『ロックのかかったセルを選択したとき、そのセルのひとつ右横に移動するマクロ』を作ればよいのでしょうか。
あるいは、セルの色で区別する方法もあるかも知れません(ロックの有無で区別出来ればベターですが)。
私のマクロ作成能力は極めて非力です。是非とも実現したいので、
さらなるご教示をいただければ幸甚に存じます。
(エータロー)
こんばんは
上記の提示したマクロは数式の入ったセルをスキップするマクロを一応作ってみたつもりです
エータローさんが言われている文字列・数式・空白混在の任意のセルのスキップとなると
一つずつの指定が必要かと思います。
もし、規則的なものがあるのでしたら可能かとも思いますが・・・・・
ちょっと解答になっていませんが、すいません
(尋)
尋 様へ
最後までご親切にありがとうございました。
(エータロー)
私のマクロの知識もたかが知れていますのでお役に立てずすいません
もし指定したくないセルとどのように動くのかを書いていただくと
他の優秀なマクロ師の皆様がお知恵を出していただけるかとも思います。
もしよろしければ、もう少し他の回答者の意見も参考にしてはいかがでしょうか
(尋)
有益な助言、ありがたく頂戴いたします。
(エータロー)
こちら事務局です、発言者のニックネームが抜けているので、記入し、
特殊文字は削除しました。
(kazu)
事務局様
お手数をおかけしました。以後注意します。
(エータロー)
Excel2000以上のバージョンを使っているなら、VBEで
ユーザーフォームを作って、RefEditを使えば、飛ばしたいセルの
マッピングが比較的簡単に出来ると思います。
https://www.excel.studio-kazu.jp/lib/e1rw/e1rw.html
まずはここら辺を参考に...
詳しくはkazuさんが... とか言ってみるテスト(笑)。
(ramrun)
ご助言ありがとうございます。
私は、入力専用の”フォーム”を作って、そこへの入力情報をワークシートに反映させるというものではなく、ワークシートそのものに入力する作業をイメージしています。ネットで実例を見たのですが、シートにパスワード保護がかかっていて、からくりが解明できないのです。
(エータロー)
入力専用の”フォーム”... ではないですよ。
選択させたくないセルをマッピングするためのフォームです。
ですからマッピング時に使うだけで、データ入力のときは
ワークシートそのものに入力ですよ。
(ramrun)
これではどうですか。下のVBAをワークシートにセットすると、
セルの色が黄色いところだけ、とまります。
(kazu)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ccl As Integer, r As Integer, c As Integer
'MsgBox Target.Cells.Interior.ColorIndex
If Target.Cells.Interior.ColorIndex = -4142 Then
For r = 0 To 50
For c = 0 To 50
ccl = ActiveCell.Offset(r, c).Interior.ColorIndex
If ccl = 6 Or ccl = 36 Then
ActiveCell.Offset(r, c).Select
Exit Sub
End If
Next c
Next r
Cells(1, 1).Select
End If
End Sub
ramrun様及びkazu様へ
ねばり強いご指導、痛み入ります。しかしながら、私の現在の知識では、せっかくのご提案内容を実行に移すことはできないのです。本件につきましては、もう少し勉強してから出直すことといたします。
(エータロー)
私も同じことを調べていましたが、次の方法でどうでしょうか。
質問から時間が経っていますので、答えは出ているかも知れませんが...
(1)入力セルなどスキップ対象外のセルの保護を外しておきます。
(2)保護セルをスキップさせたいワークシートに以下のマクロを記述します。
Private Sub Worksheet_Change(ByVal Target As Range)
EnableSelection = xlUnlockedCells
Protect
End Sub
(3)シートを保護すると、保護セルはスキップされます。
当然ですが、選択もできなくなりますで、保護セルはコピペもできなくなります。
もしも対象となるシートが複数ある場合は、シートごとにマクロを記述するよりも
ThisWorkbook に以下のマクロを記述したほうが良い場合もあります。
Private Sub Workbook_Open()
Sheets(1).EnableSelection = xlUnlockedCells
Sheets(1).Protect
' 必要に応じて以下追加
'Sheets(2).EnableSelection = xlUnlockedCells
'Sheets(2).ProtectEnd
End Sub
Excel2000 で動作確認しました。
(ますのすけ)
ThisWorkbook に以下のマクロを記述したほうが良い場合もあります。
Private Sub Workbook_Open()
Sheets(1).EnableSelection = xlUnlockedCells
Sheets(1).Protect
' 必要に応じて以下追加
'Sheets(2).EnableSelection = xlUnlockedCells
'Sheets(2).Protect
End Sub
(ますのすけ)
エータローさん、こんばんわ。。
ツール→シートの保護→で出てくるダイアログの 一番上の「ロックされたセル範囲の選択」のチェックボックスの「レ」を外したら、、 ロックされたセルを選択できませんわ。 (kei)
このトピックは 2002/09/29 21:12:17 の投稿となっております。 印刷フォームもかねた入力フォームシートの場合はセルの移動が 規則性のないものになるなど、仕組みばかりが複雑になることが 多いので、入力フォームは単純に上から下に入力していくもの、 印刷フォームは別に作って、任意の位置へ入力フォームの入力 内容を反映させる方法ですと、関数のレベルで処理できます。 (みやほりん)(-_∂)b 2010/3/25 9:01
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.