• 締切済み

エクセル マクロのいれ方

エクセルを使って表を作っています。 自分のしたい事をするには、マクロを組まなくてはならないことが分かりました。 私はマクロは使ったことがないので、本来ならちゃんと勉強すべきなんですが、締め切りが迫ってるので、マクロのVBAを調べました。 したいのは、『ロックされているセル以外のデータをクリアにする』ということなんですが、その為には下記のVBA?を入れればいいらしいのです。 Sub UnlockCellClear() Dim Rng As Range For Each Rng In UsedRange   If Rng.Locked = False Then     Rng.Clear     Rng.Locked = False   End If Next End Sub ツール→マクロ→VBA→標準モジュール→Module1を開き、上記のVBAを入れてみましたが出来ませんでした。 そんな簡単なことじゃないんですかね? ど 質問の説明が下手でしたら申し訳ありません。

みんなの回答

noname#111860
noname#111860
回答No.10

>なのでこうかな? #こうかな...って、動かないし・・・。 余計なコードがあったので修正します。 ~ Sub UnlockCellClear() Dim Rng As Range For Each Rng In Range("A1:N1050") If Rng.Locked = False Then Rng.Value = vbNullString End If Next End Sub

noname#111860
noname#111860
回答No.9

> もし気が向いたら教えて下さい。 大変なことが多い世の中で、 偽善と判っていても、こんな人助けがあってもいいかな・・・。 > ただ、結合したセルの一部を変更することは出来ません、となりました。 > また、クリアにするって書式もなんですね。 >書式は消さず、結合したセルにも対応させたかったのですが、 書式、というと、セルの色なども関係しちゃうので、 セルの色など変更したくない、文字の入力値のみ消したい場合は Rng.Clear を Rng.Value = vbNullString に変更するといいです。 なのでこうかな? ~ Sub UnlockCellClear() Dim Rng As Range For Each Rng In Range("A1:N1050") If Rng.Locked = False Then Rng.Value = vbNullString '★ Rng.Locked = False End If Next End Sub

noname#111860
noname#111860
回答No.8

ExcelのBookで保存した後の実行イメージも載せて起きます。

liz-noise
質問者

お礼

ありがとうございました。 解りました! ただ、結合したセルの一部を変更することは出来ません、となりました。 また、クリアにするって書式もなんですね。 書式は消さず、結合したセルにも対応させたかったのですが、お願いし過ぎになっちゃいますし、既に違う質問ですので、諦めます。 もし気が向いたら教えて下さい。 ほんと色々ありがとうございました。

noname#111860
noname#111860
回答No.7

>標準モジュールを開いて、そこにコピーしました。 恐らく、下の画像のようになっていると思います。 そうした状態で、Excelファイルを保存してやるといいです。 Excelファイルを保存したら、 No3で回答したように、 #メニューバーの[ツール]-[マクロ]-[マクロ(M)]をクリックします。 #もしくはAlt+F8キーでも可能です。 #そうするとちっちゃな画面が起動しますので、 #その中から、UnlockCellClearを選択して、 #「実行(R)」ボタンを起動してみてください。 (画像って二枚張れるのかな) >enterだと改行しかしないです。 が、ちょっとどのような操作をしているか伝わらないのですが

noname#111860
noname#111860
回答No.6

>ツール→マクロ→Visual Basic Editer→VBAProject でVisualBasicEditorを起動したら、 MicrosoftExcelObjectを選択して、右クリック、 そうすると 挿入、標準モジュールが選択できるので、選択(左クリック)です。 詳細は、下の画像を確認をば・・・。

liz-noise
質問者

お礼

ありがとうございます。 標準モジュールを開いて、そこにコピーしました。 その後何をすれば登録になるのでしょうか。 enterだと改行しかしないです。 なんか結局こまごまとスイマセン・・・。

noname#111860
noname#111860
回答No.5

>For Each Rng In Range("A1:N1050")としたら、修正候補と出てエラーでした。 ん~、こちらでも動作確認を取ってみましたが、 動いてしまいました。 念のため、新規ExcelBookに標準モジュールを追加し、 下記コードを記載し、エラーとなるか確認してみてください Sub UnlockCellClear() Dim Rng As Range For Each Rng In Range("A1:N1050") If Rng.Locked = False Then Rng.Clear Rng.Locked = False End If Next End Sub #Excel2003で動作確認しています。

liz-noise
質問者

お礼

ごめんなさい、色々やってたら混乱してきました。 凄い初歩なんですが、 ツール→マクロ→Visual Basic Editer→VBAProject→ThisWorkbookを開いてそこに入れるんですよね。 それでEnterでいいんでしたっけ? 改行するばかりで決定しなくなっちゃいました。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.4

ツール→マクロ→マクロ で、リストから UnlockCellClear 選んで実行すれば良いです。

noname#111860
noname#111860
回答No.3

>なので、ショートカットキーの設定をして、手動で? メニューバーの[ツール]-[マクロ]-[マクロ(M)]をクリックします。 もしくはAlt+F8キーでも可能です。 そうするとちっちゃな画面が起動しますので、 その中から、UnlockCellClearを選択して、 「実行(R)」ボタンを起動してみてください。 実行の仕方は以上ですが、 ちょっとマクロの方にも問題がありそうですね UsedRangeに編集を行なうセルの対象範囲が設定されていないので マクロがエラーとなってしまうと思います。 ので範囲を指定しちゃいましょう 例えば、A1~F20の間のセルだけを対象にしたいのであれば For Each Rng In UsedRange を For Each Rng In Range("A1:F20") のようにしてみてください。

liz-noise
質問者

お礼

ありがとうございます。 For Each Rng In Range("A1:N1050")としたら、修正候補と出てエラーでした。 範囲が広すぎるんでしょうか・・・?

  • boro-pc
  • ベストアンサー率30% (64/208)
回答No.2

セルの書式設定で保護られてないヤツが消えりゃ良いんですか? Excel2000ですけど質問文のコードで動きますよ… まぁ3行目のUsedRangeをホントの範囲に指定してやんないとダメですが… 例:Range("a1:Z100") >出来ませんでした。 は何がどうしてどう動かないのか具体的に書いた方が良いですよ そうすると全国のえくせらーな人たちがガンガン回答してくれます

noname#111860
noname#111860
回答No.1

そのマクロは、何をやった時に起動すればよいのでしょうか? 例えば、Excelのファイルが開かれた時に実行したいのであれば、 標準モジュール、 Sub Auto_Open Call UnlockCellClear End Sub と記述してやればよいと思います。 ボタンがクリックされた時、セルの値が変更されたときなど、 マクロを実行したいタイミングによって、 呼び出す元が異なりますので、ご注意を

liz-noise
質問者

お礼

早速ありがとうございます。 建築業で、それぞれ工事の工事名、原価等を表に入れているのですが、 月毎にそのデータを更新する為、項目名だけ残して、中身だけ変えたいのです。 なので、ショートカットキーの設定をして、手動で?(という言い方は変ですが、自分のタイミングで)起動したいです。 よろくお願いします。

関連するQ&A