• ベストアンサー

エクセル マクロ 条件に応じてロック

エクセル2002を使用しています。 1行目のG1に”ロック”という文字列が入っていたら 2行目のG列の1つ前のF列で”A2:F2”まで、セルをロックしたいのですが、 どのようにマクロを書けばいいでしょうか? (”ロック”の文字列は、1行目には1つしか入りません。) できれば、エクセル2000でもマクロが対応できると嬉しいです。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

「ロックしたい」の意図がイマイチ不明ですが,こういう事でしょうか。 Sub Macro1()  Dim h As Range  Cells.Locked = False  ActiveSheet.Protect userinterfaceonly:=True  Set h = Range("1:1").Find(what:="ロック", lookat:=xlWhole)  If h Is Nothing Then Exit Sub  If h.Column = 1 Then Exit Sub  Range(Range("A2"), h.Offset(1, -1)).Locked = True End Sub

paci12451
質問者

お礼

ありがとうございます。無事に解決しました。

paci12451
質問者

補足

早速の返信ありがとうございます。すいません、「ロック」と書きましたが、その部分を保護して編集できなくしたいのです。

関連するQ&A

  • エクセルのマクロの作成について

    エクセルのマクロの作成について教えてください!! 一つのセルの中に3行の文字があるとして・・・・ そのセルの2行目と3行目を隣のセルにうつしたいです。 例えば・・ E列の1行目のセルに あいうえお かきくけこ さしすせそ と文字が入っていて、 それを F列の1行目のセルに かきくけこ さしすせそ のみ移動させたいです。 1行~300行ほどあって、さらにデータは増え続けます、手作業での移行が困難になってきました。 そもそも一つのセルの中身の文字の一部を違うところに移動させるマクロは組めるのでしょうか。 当方初心者です。お手柔らかにお願いします。

  • Excelのマクロでセル単位でロックをかける方法に関する質問です。

    Excelのマクロでセル単位でロックをかける方法に関する質問です。 例えばa1からd10の範囲のセルに対して a列の各セルは、IF関数で数値か""を返しているとします。 a列のセルが数値であれば、同じ行の各セルをロックし、""であれば、後からそのセルに手入力できるようにロックを外したいと思います。(もちろんIF関数は書き換えられますが、それでOKです) 例えば、a1が数値なら、a1,b1,c1,d1の各セルはロックに、     a1が""なら、a1,b1,c1,d1の各セルはアンロックに したいわけです。 手作業だと行数が多い場合大変なので、マクロで自動的に行いたいと思いますが、マクロ初心者のため、どうすればよいのかわかりません。 どなたかご教授願えればありがたいです。 よろしくお願いします。

  • エクセル2010 繰り返しマクロ

    (1)g列の空白の最上行に =SUMPRODUCT(min((a:a>=f2)*(a:a<f2+730)*e:e)) と入力。 そのセルをコピーし、同じセルに値を上書き貼り付け ↓ (2)a列に(1)のセルの左隣のセル以下の数値がある行の、b列を削除 (画像の場合、(1)のセルがg1の場合、b2,b3を削除する) というのを、f列に数値がある行だけ繰り返すマクロの構文を教えてください。 大変お手数おかけいたしますが、どうぞよろしくお願いします。

  • マクロの条件別分岐について

    集計表のマクロを作成しています。 その際に条件によって、使用するマクロを使い分けたいと思っていますが上手くいきません。 次のように、E列に倉庫コード・G列に数量が表示されている書式を使用しています。 (例)  (E列)(G列) 1  22B  0 2  31A  1 3  54A  0 4  456  40 5  65C  41 6  32B  60 7  33A  40 ※1行目から300行目まで文字が投入される可能性があります。 そして、次の条件によって、使用するマクロを分岐したいと思っています。 「1」.E列で文字列"B"が含まれている   かつ その行のG列の数量が1以上 の組み合わせがある 「2」.E列で文字列"B"が含まれていない かつ その行のG列の数量が1以上 の組み合わせがある 「1」「2」2つの条件に当てはまる場合は「a」の処理 「1」の条件にのみ当てはまる場合は「b」の処理 「2」の条件にのみ当てはまる場合は「c」の処理 (「1」「2」のどちらにも当てはまらない場合は無いので省略) ちなみに処理の内容は次のとおり 「a」:A・B2つのピボットテーブルを作成する 「b」:Bの1つのピボットテーブルを作成する 「c」:Aの1つのピボットテーブルを作成する 例の場合の処理は次のようになります。 ●1行目はセル(E1)は"B"が含まれているが、セル(G1)の数量が 1以上ではないので、「1」にも「2」にも当てはまらない。 ●2・4・5・7行目はE列に"B"が含まれていなくて、G列が 1以上なので「2」の条件 ●3行目はE列に"B"が含まれていないものの、G列の数量が 0なので「1」にも「2」にも当てはまらない。 ●6行目はE列に"B"が含まれていてセル(G6)の数量が1以上 なので「1」の条件 よって「1」「2」のそれぞれにあてはまる行があるので「a」の処理を行う。 セル範囲(E1:G300)の全ての行に関して上記の「1」「2」の条件に当てはまるか検索して、それぞれ当てはまった条件によって「a」「b」「c」の処理を行うようにしたいです。 (例)の場合だったら 6行目まで検索した時点で「a」の処理が決定します。 Select Case のマクロを使用したら良いと思ったが、どのようにマクロを記述したらよいのか解らないので教えていただけると助かります。 イメージとしては Select Case (1から300行目で「1」と「2」の条件に当てはまる行がある場合) 処理「a」を行う。 Select Case (1から300行目で「1」の条件に当てはまる行はあるが「2」の条件にあてはまる行はない場合) 処理「b」を行う。 Select Case (1から300行目で「2」の条件に当てはまる行はあるが「1」の条件にあてはまる行はない場合) 処理「c」を行う。 というところまではわかりますが、括弧の中の記述方法が分かりません。あるいは別の処理があれば教えていただけると助かります。

  • エクセル2003のマクロ作成の件

    同一連続セルにあるグループの中で、D列に「完了」があれば、F列に「4」を入力し、その同一連続セル内で、検索し、D列の対応中を探します。その「対応中」の先頭が、完了にした担当者と同じであれば、「9」を。違えば、「0」を。完了は、同一セル内の最後にきていない事もあります。該当しない時や単一セルの時は、何もせず、空白のままにします。A列には、空白行がなく、3万行ほどあります。特定文字を探し、その1行上を探すなどののマクロはできるのですが、条件が重なると、作成が出来ません。今まで、手動で、数値を入れていたのですが、マクロで作成出来ないものでしょうか?マクロ初心者です。

  • エクセルの条件付き書式設定マクロについて

    エクセルの条件付き書式設定マクロについて A列からH列まで文字や数字が投入されています。 データが5,000行くらいあって、50行に1回くらい不定期で空白の行が出てきます。 データが入っている全ての範囲において、「C列が空白以外の場合に、 同じ行のA列からH列のセルの上と下を破線?(.Weight = xlHairline)左も右も縦線は実線? (.Weight = xlThin)にする」という条件付き書式を設定したいのですが、マクロが 上手く組めません。 ひとつのセルの条件付き書式の設定はマクロを組めるのですが、 A1:H5000というような広範囲で条件付き書式の設定を組むのが上手くいきません。 教えていただけないでしょうか。

  • エクセルのマクロ

    あるエクセルのファイルにLIST(A列に呼びだすエクセルファイル名、B列からD列に呼びだしたエクセルに貼り付ける文字列があり、それが100行程度ある)があり、そのLIST A列に書かれているエクセルファイルを開き、その開いたエクセルファイルのある特定のセルにB列からD列にあるセルをそれぞれに貼りつける作業を繰り返すようなマクロはできないでしょうか? [流れ] LISTに書いてあるエクセルファイルを呼び出す→文字列を貼りつける→保存(できれば名前を変えて保存(その場合は、LISTのE列に名称を記載)→閉じる→次のLISTのエクセルファイルを開く→それをLISTの最後の行まで終わるまで繰り返す。 よろしくお願いします。

  • エクセルのマクロについて教えてください

    エクセルで、その行の中に赤色のセルがある場合は、その行のA列のセルに"○"を入れるというのは、マクロで書く場合はどのように書けばよいでしょうか。 行は1~100まで、列はA~Zまであります。赤色のセルはB列~Z列の所々に点在します。

  • Excel 2007のマクロ記述について

    Excel 2007で、B4セルからI最終行までの整数のみを小数点以下1桁にする処理をマクロで実行したいのですが、どのように記述したらよいか教えてください。 最終行とはI列にセルの値がある最後の行です。 下記の例のマクロ実行結果は、1→1.0、2→2.0となります。 (例)      列      A  B    C    D    E   F  G   H  I    J      K  行4  A1 0.9   0.9   0.9   0.9  1.2  1.2   2  2   CIRCLE  CIRCLE    5  A2 1.4   1.4   1.6   1.6   1   1  1.5  1.5  CIRCLE  CIRCLE    6  A3 0.71  0.71   0.71  0.71  1   1  1.5  1.5  CIRCLE  CIRCLE マクロ実行結果      列      A  B    C    D    E   F  G   H   I    J      K  行4  A1 0.9   0.9   0.9   0.9  1.2  1.2  2.0  2.0  CIRCLE  CIRCLE    5  A2 1.4   1.4   1.6   1.6  1.0  1.0  1.5  1.5  CIRCLE  CIRCLE    6  A3 0.71  0.71   0.71  0.71  1.0  1.0  1.5  1.5  CIRCLE  CIRCLE

  • EXCELのマクロで。。。

    シートAのセルC2の値(数字)を シートBのE、F、Gの各列のうち空いている一番左のセルで、かつ、D列に何か書いてある一番下の行のセル に転記したいです。 たとえば、シートBが図のような場合にはF28です。これが毎回、変化します。 マクロの記述を教えて下さい。よろしくお願い致します。

専門家に質問してみよう