プロが教える店舗&オフィスのセキュリティ対策術

自分なりにいろいろ試してみたのですが、どうしても理想とする形にできなくて…。
A~Iまで使用の列があり、その間入力したい列がA、D、E、G、と飛んでおります。
名前の定義を使ってセル指定で移動するには行数が100を超えるため上手くいかず、列指定にすると縦入力からになってしまい意味がありませんでした。
またシートを保護する方法も試したのですがオートフィルタが使えず、セルの非表示はそこに見たい結果が出るため入力して再表示してまた非表示で入力して…と二度手間になってしまいます。
オートフィルタを使えて、尚且つセルを飛ばして入力していくにはどのような方法がありますか?
入力はA1、D1、E1、G1、A2、D2…と行い、横移動はtab、縦移動はenterを使用で行ってました。

マクロしかないのかと思ってはいるのですが、今まで使ったことがないため設定の仕方がわからず躊躇してしまってました。
何か妙案がありましたら教えてください。
よろしくお願いします。

A 回答 (6件)

> 毎回ツールからマクロの実行を選ばなくてもいい方法


>(ショートカットキーの作成以外)

マクロの名前(#4 では Sample)を Auto_Open に書き換えます。
この名前がつけられたマクロはブックを開いたときに自動実行
されます。

さらに、#4 は現在アクティブなシート(ActiveSheet)に対して
実行するマクロですが、自動実行するとなるとある特定のシート
に対して保護を実行するようにした方が良いでしょうね。
少し修正します。

#4 でコピペしたマクロ全体を一度消去し、再度貼り付け直して
下さい。

Sub Auto_Open()
  With Worksheets("Sheet1") ' <-- シート名で指定する
    .Unprotect
    .Protect UserInterFaceOnly:=True
    If .AutoFilter Is Nothing Then
      ’.Range("A1:H1").AutoFilter ' フィルタ範囲を明示する場合
      .UsedRange.AutoFilter
    End If
    .EnableAutoFilter = True
  End With
End Sub

#5 ご回答で紹介されてます Change イベントを活用する方法も
良く使われる方法です。お好みでどうぞ(・∀・)
    • good
    • 0
この回答へのお礼

ありがとうございます!!
理想通りの形に仕上がりました!!

お礼日時:2007/06/03 19:43

妙案かどうか分かりませんが、データ→フォーム で入力フォームを使う方法もありますが、あまり評判は良くありません。

使い勝手を良くするにはフォームのカスタマイズが必要です。かなり面倒なカスタマイズです。
それよりもユーザーフォームを作った方が早いかもしれません。

実用的な方法としては、以下のようなコードを仕込んで入力したりしています。
凝って、入力方法の完璧さを追及する手もありますが、目的が本末転倒になるので、「便利になればいい」程度で使っています。


使い方

○以下は Sheet1 を使用している前提です。

●入力してEnter(またはTab)で、希望する次のセルに飛びます。A→D→E→G→次の行のA
 ただし、入力しないでEnterだけ押すと次には飛びません(欠点)

●ツール→オプションの編集タブで、入力後にセルを移動するにチェックし、「右」にしておきます
●オートフィルターは問題なく使えるはずです


ツール→マクロ→Visual Basic Editor でVBE画面に移り、表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示し、
Microsoft Excel Objects の Sheet1をダブルクリックし、出てきたコードウインドウに下のモジュールをコピーして貼り付けます。
貼り付けが済んだら、シートに戻り、入力を開始します。

↓ここから
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Count <> 1 Then Exit Sub

  Select Case Target.Column
    Case 1: Target.Offset(0, 3).Select  '// A列
    Case 4: Target.Offset(0, 1).Select  '// D列
    Case 5: Target.Offset(0, 2).Select  '// E列
    Case 7: Target.Offset(1, -6).Select  '// G列
  End Select
End Sub
↑ここまで
    • good
    • 0
この回答へのお礼

ありがとうございます。
色々な方法があるのですね…。参考になりました。

お礼日時:2007/06/03 19:44

補足しておきます。



#2 で解説している EnableAutoFilter プロパティーの設定は、記録
されません。つまり、ブックを開きなおすとディフォルト値の False
に戻ってしまいます。

その都度、VBE で設定するのが面倒なら、やはりマクロを書いて、
それを実行するようにした方が良いですね。

#2 のサンプルはひとまず横に置いておき、下記のコードをお試しを。

1. [Alt]+[F11] で VBE を開く
2. [挿入]-[標準モジュール]
3. 下記のコードをコピペ
4. VBE を閉じる
5. [ツール]-[マクロ]-[マクロ] で実行

Sub Sample()

  With ActiveSheet
    .Unprotect
    .Protect UserInterFaceOnly:=True
    If .AutoFilter Is Nothing Then
      ’.Range("A1:H1").AutoFilter ' フィルタ範囲を明示する場合
      .UsedRange.AutoFilter
    End If
    .EnableAutoFilter = True
  End With

End Sub

この回答への補足

ありがとうございます。
シートを保護した状態でオートフィルタが使えるようになりました!!
ただ、一度フォルダを閉じてしまうと、マクロを有効にするにチェックを入れてもまたツールからマクロの実行を選ばないといけないようで…。
毎回ツールからマクロの実行を選ばなくてもいい方法(ショートカットキーの作成以外)というのはあるのでしょうか?

何度も質問ばかりで申し訳ありませんが、もしご存知でしたらお願いします…。

補足日時:2007/06/03 16:38
    • good
    • 0

> OSが2000なのですが、何か関係ありますか?



関係ありません。Excel も Excel97 については忘れてしまいましたが、
Excel2000 以降であれば問題ないはずです。

>> オートフィルタはシート保護解除の状態で予め設定しておいて下さい。

この点は大丈夫ですか?

シートを保護した状態で、オートフィルターを設定することはできません。

 1. 保護解除された状態でオートフィルターを設定
 2. シートを保護

の順番です。

それから、EnableAutoFilter プロパティーを設定したシートはあって
ますか?

以上、2点のご確認を。
    • good
    • 0

こんにちは。



シートの EnableAutoFilter プロパティーを True にしておけば、
シート保護時でもオートフィルターが使用可能です。

  1. [Alt]+[F11] を押して VBE を立ち上げる
  2. 左側ツリーで対象となるシートをクリックして選択
  3. [F4] を押して、プロパティーウインドウを開く
  4. プロパティーウインドウにある
    EnableAutoFilter の値を True にする
  5. VBE を閉じる

以上です。コードを書く必要はありません。オートフィルタは
シート保護解除の状態で予め設定しておいて下さい。

あとは、わかりますよね?

なお、シート保護・解除と上記の設定をひとつのマクロで実行する
コードは下記のようになります。ご参考までに。

' // << 参考コード >> 貼り付け先:標準モジュール
' // シート保護・解除を実行する度切り替える(パス無し限定)
Sub ProtectSwitch()

  On Error GoTo ERROR_HANDLER
  With ActiveSheet
    If .ProtectContents Then
      .Unprotect
    Else
      .Unprotect
      .EnableAutoFilter = True
      .Protect UserInterfaceOnly:=True
    End If
  End With
  Exit Sub

ERROR_HANDLER:
  MsgBox Err.Description
End Sub

この回答への補足

ありがとうございます。
さっそく
  1. [Alt]+[F11] を押して VBE を立ち上げる
  2. 左側ツリーで対象となるシートをクリックして選択
  3. [F4] を押して、プロパティーウインドウを開く
  4. プロパティーウインドウにある
    EnableAutoFilter の値を True にする
  5. VBE を閉じる

というのをやってみたのですが、何か操作を間違っているのかオートフィルタは使えませんでした…。
OSが2000なのですが、何か関係ありますか?

補足日時:2007/06/03 14:57
    • good
    • 0

なんか、良く理解できないのでが??。


横移動はtab、縦移動はenterを使用で ダメなんですか??。

オートフィルタを使用するには、左端の行に値が、入っていれば
利用できますが、
注意; 空白行がないこと。

もっとも なければ、入れて 後で 削除すれば、良いですね。
    • good
    • 0

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