• ベストアンサー

エクセルで特定のセルしか選択させない方法?

エクセル97です。シートの連続しない特定のセル数箇所だけをカーソルで選択できるようにし、他の部分はカーソルが移動しないようにしたいのです。過去の書き込みをみて Sub Test() ActiveSheet.ScrollArea = "F10" ActiveSheet.ScrollArea = "F12" ActiveSheet.ScrollArea = "F14" End Sub と、やってみましたが、F10で止ったままになってしまいました。 連続しないセルを指定するのはどうすればいいのでしょうか? また、この制限を解除する方法も教えてくださいますようお願いします。

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

  • ベストアンサー
回答No.2

まずマクロを実行する前に特定のセルだけをロックを外します。 その方法は、セルF10で「書式」→「セル」→保護タブでロックのチェックを外し、同様にF12、F14などもロックを外します。 その後シートを保護します。 Sub 入力制限() Worksheets("sheet1").EnableSelection = xlUnlockedCells End Sub このマクロで「Sheet1」上のロックされていないセルだけを選ぶことができるようになります。他のセルは選ぶこともできなくなるはずです。 Sub リセット() Worksheets("sheet1").EnableSelection = xlNoRestrictions End Sub 次にこのマクロを実行すると解除されます。 他にもスクロールエリアを制御したりすることもできます。 VBAはいろいろできておもしろいですね。

otasukey
質問者

お礼

ありがとうございます。これで、入力させたいセルへの移動については思った通りなのですが、実はロックしたセルも数箇所選択したいところがあるんです。(そこにフォームでチェックボックスやドロップダウンリストボックスを配置しますので) その場合はどうすればいいのでしょう?

その他の回答 (4)

回答No.5

#2で回答した者です。 >ロックしたセルも数箇所選択したいところがあるんです。(そこにフォームでチェックボックスやドロップダウンリストボックスを配置しますので) ちょっとイメージが湧きませんが、チェックボックスやドロップダウンはどうせマウスでクリックするのですから、カーソルがそこに動く必要はないのではないでしょうか。単にその場所にカーソルが動くだけならば、そのセルのロックを外せばできますが、結局ドロップダウンリストボックスなどの場合はその先にリストを選ぶ必要があり、マウス操作になるので必要ないのでは? カーソルが移動した後、マウス以外でどのようにリストを選択したいのでしょう。 マウスならすでにチェックやドロップダウンは自由に使えます。 また、チェックボックスなども「コントロールの書式設定」→「保護」タブでロックが外せますが、これはあまり意味がないようです。 結論としては「できない(カーソルの移動だけならできる)」といったところでしょうか。

otasukey
質問者

お礼

それもそうですね。 大変有難うございました。お礼が遅くなりすみません。

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

#3のものです。 >うまく作動しません--->それで作動しているのです。黒く範囲指定してしまうのは、そのようになっているようです。 白いセルがアクティブセルです。そこに入力できます。 (1)入力+エンタ後に自動的にカーソルが飛ぶこと。 (2)指定されたセル以外は行かないこと。 (3)コーディングが1行で済むこと。 がメリットで、黒く範囲指定してしまうのは好みじゃないが、エクセルの仕様のようです。こう言うのもあるというぐらいで、よろしく。

otasukey
質問者

お礼

有難うございました。 お礼がおそくなり申しわけありませんでした。

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

Sheet1のselection_changeイベントで、実現する ように思います。下記("a1,f2,c2")は,A1,F2,C2に セルポインタが行きます。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.Goto Worksheets("sheet1").Range("a1,f2,c2"), True End Sub ただ入力が終わったらこのルーチンが働かなくする仕掛け が必要ですが、省略。フラグを立てて、そのフラグ値によりExit Subすれば良い。

otasukey
質問者

お礼

ありがとうございました。 sheet1のモジュールにコピー&ペーストしてみましたが、うまく作動しません。 a1,f2,c2のセルが同時に選択されてしまいます。(入力は順番に出来ましたが)

  • etosetora
  • ベストアンサー率22% (39/175)
回答No.1

97で使えるかどうかわかりませんが 移動したいセルにカーソルをあわせる 書式 セル 保護 ロック のチェックマークを外します 次に ツール 保護 シートに保護 をかけます パスワードを忘れずに!

otasukey
質問者

お礼

さっそくありがとうございます。 ただ、この方法では、タブキーでの移動はそうなりますが、エンターキーでは隣りのセルに移動してしまいますので駄目なんです。すみません。

関連するQ&A

  • Excel 2000にて特定のシート(シート名 1~30)セル保護をし

    Excel 2000にて特定のシート(シート名 1~30)セル保護をしていないデータ(結合セルを含む)を一括削除を行いたいのですが、サイトで見つけた物を使用してみたのですが、うまくいきませんでした。 よろしくお願いします。 Sub test2() ? Dim c As Range ? With ActiveSheet ??? .Unprotect ??? For Each c In .UsedRange ????? If Not (c.Locked) Then c.MergeArea.ClearContents ??? Next ??? .Protect UserInterfaceOnly:=True ? End With End Sub シートは40枚程あるのですが、削除したいのはシート1~30迄のデータです。 マクロのレベルは初級レベルです。 よろしくお願いします。

  • エクセルVBA/SpecialCellsで特定文字列のセルを選択

    いつもお世話様です。 Sub test() ActiveSheet.Range("C1:C200").SpecialCells(xlCellTypeConstants).Select End Sub で検索範囲内の「定数」のセルをいっぺんに選択できますが、これを例えば、「AAA」という文字列のセルだけを一度に選択するにはどうすればいいでしょうか? (また、あるいは「123」という数値のセルの場合には?) よろしくお願いします。

  • エクセル2002、OS=WinXPです。エクセルので、特定セルに入力さ

    エクセル2002、OS=WinXPです。エクセルので、特定セルに入力された文字列によってシート見出しの色を変えたいですが、VBA式がうまくいきません。 もし、セルB3の値がAAAの場合、シート見出しの色を緑(カラーNo=50)にする。 もし、セルB3の値がBBBの場合、シート見出しの色をピンク(カラーNo=7)にする。 もし、セルB3の値が上記以外の場合、シート見出しの色を白(カラーNo=2)にする。 というふうにしたいと考えています。マクロを用いていろ番号を調べたところ、上記Noでした。 Sub 会社名に合わせてシート見出し色を変更() ' ' ActiveSheet.Select If ActiveSheet.Range("B3").Value = AAA Then ActiveWorkbook.ActiveSheet.Tab.ColorIndex = 50 ElseIf ActiveSheet.Range("B3").Value = BBB Then ActiveWorkbook.ActiveSheet.Tab.ColorIndex = 7 Else: ActiveWorkbook.ActiveSheet.Tab.ColorIndex = 2 End If End Sub 上記式で実行をクリックしても実行されません。無反応です。調べて直してもだめでした。上記の式の間違いを教えていただけませんでしょうか??? さらに、このマクロを今開いているブック全体に反映するためには、ActiveSheet の文字を削除すればよいでしょうか??すみませんが、詳しい方、あわせてご回答いただけますでしょうか?    

  • VBAで連続して二つのセルの内容をを一つのセルにコピー

    初めまして、よろしくお願いします。 VBAで連続して二つのセルの内容をを一つのセルにコピーしたいと考えています。 Sub Test1() Sheet1.Range("A1") = Sheet2.Range("A1") & Sheet2.Range("C1") End Sub というのは解りますが、A1からA100までの連続で、その間空白がある場合のVBAを教えて頂きたく、よろしくお願いします。

  • 再び質問です。1つのシートを上下に分割した状態で、

    できれば、新しいウィンドウを開かずに、 ウィンドウ⇒分割 1つのシートを上下に分割した状態で、 上半分のシートは、縦のスクロールが1から50までに制限し、 下半分のシートは、縦のスクロールが60から100までに制限したいのです。 ↑ここまでは、解決しました。(下記マクロ) Private Sub Worksheet_SelectionChange(ByVal Target As Range) If ActiveWindow.Panes.Count = 1 Then ActiveSheet.ScrollArea = "" Exit Sub End If ActiveSheet.ScrollArea = IIf(ActiveWindow.ActivePane.Index = 1, "1:50", "60:100") End Sub できれば、同時に水平のスクロールをA列からP列までに制限したいのですが、 マクロの続きを教えていただけると幸いです。

  • Excelで特定のセルのみ移動し入力したいのですが。

    Excel2000を使用しています。シートに保護をかけて特定のセルのみに入力できるように設定することまではできたのですが、その特定のセルのみにカーソルを移動させる方法はありますか?例えば、表の行を入力しないセルにはカーソルを移動させないようにして、行末のセルまでいくと次の行に改行されるようなことです。コントロールツールボックスのプロパティのEnableSelectionの項目を1_xlUnlockedにしてみると特定のセルのみ移動させることはできるのですが、保存してブックを閉じてしまうとその設定が解除されてしまうようです。マクロは複雑そうなので何か別の簡単な方法があればどなたかご教示ください。

  • セルを選択するマクロ(エクセル)

    Sub test() x = ActiveCell.Row y = ActiveCell.End(xlToLeft).Column z = ActiveCell.End(xlToRight).Column Range(Cells(x, y), Cells(x, z)).Select End Sub アクティブセルが含まれている行のみで、データが入力されている連続したセルを選択状態にするマクロとして、上記を考えました。 上記を違った形でもっと簡潔に表すことは可能でしょうか?

  • VBA 選択したセルが空白であったらシートを削除

    こんばんは!いつもお世話になっています。 選択したシート1のセル(C9)が空白であったら、選択したシートを削除するマクロ(VBA)を作りましたが、上手く作動しなくて困っています。 どうしたらよいのかよろしくお願い致します。 'シート1のセルC9を選択し、空白か判断する Sub セルの選択()   Worksheets("Sheet1").Activate   Range("C9").Select  If Len(Application.Trim(ActiveCell)) = 0 Then   MsgBox("空白セル")  End If End Sub '現在アクティブなシートを削除する Sub DeleteWorksheet() Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True End Sub

  • エクセル表の特定のセルを書き込み禁止にする方法

    XPで、エクセル2007を使っております。シート1のデータを、VLOOKUP関数でシート2のフォーマットに書き込むように作りました。このシート2のフォーマットは全体的には書込み禁止にして、特定のセルだけ書き込み許可としたいのです。エクセルヘルプの解説を読んでも、特定のセルの保護の方法が分かりません。よろしくお願いします。

  • 《エクセル2000》特定のセルだけ上書き禁止にしたい

    タイトルの通りですが、任意のシートの特定のセルのみ、変更禁止にしたいです。(数にして1シートあたり30くらい) ただし、「特定のセル」以外のセルは文字色やセルの色など、書式を変える必要があるので、「シートの保護」は使えません。 「セルのロック解除」+「シートの保護」以外の方法で、特定のセルのみを保護する方法はあるでしょうか。

専門家に質問してみよう