[[20030709121430]] 『指定したセルの値を消去[消す]方法』(とも) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『指定したセルの値を消去[消す]方法』(とも)

 指定したセルといいますか
 ボタンか何かをクリックすると、セルの値を消去する方法というのはありますか?
 もしくは、ある期限が過ぎるとセルの値を消去するというのは・・・。
 このようなことは可能なのでしょうか?
 教えてください!!
 よろしくお願い致します。


 いつも決まった範囲(A1:A30とか、名前が定義された範囲)を消すだけなら、
 ツール>マクロ>新しいマクロの記録で消す操作を記録し、
 オートシェイプで描いたボタンにでもマクロを登録するのが簡単でしょう。

 「ある期限が過ぎると…」というようなことをやりたい場合は、
 もうすこし具体的に書くと、レスがつきやすいと思いますよ。 
 (YS)

 いつも決まった範囲というか、決まったセルの値だけを消す操作で対応できると思います。
 マクロを使ったというか登録等をしたことがないので、わからないのです。

 ある期限が過ぎるというのもできるのですかね?
 具体的には、下記のような表で

  品名    数量      ←右のような表で、数量が入っている所だけを
                例えば右の表が7月だったら7月が過ぎて8月になったら
 リンゴ    10        数量のセルの値が消えるという感じなのですが・・・。
 メロン     5
 バナナ    20

 小計     35

 品名    数量

 きゅうり    2
 トマト    10
 なす      3

 小計     15

 合計     50

 こんな感じなのですが、、、
 できるのでしょうか?
 教えてください!!
 よろしくお願いします。(とも)


 まず、マクロの登録ですが、
 \x{fffd}@ツール>マクロ>新しいマクロの記録 を選択し
   DelFruitとか任意のマクロ名を入力し(初期表示のMacro1などでも構いませんが)OKをクリックします。
  記録の終了という■ボタンのある小さなウィンドウが表示され、記録が開始されます。
 \x{fffd}A実際に削除したい範囲を選択して削除する操作を行い、記録の終了の■ボタンを押します。
   これでマクロが作成されました。
 \x{fffd}B次に、ボタン代わりにする図形を挿入し、位置や大きさを調整します。
   オートシェイプの[基本の図形]のボタンの絵とか、クリップアートの果物や野菜の絵がいいかも。
 \x{fffd}C挿入した図を選択し、右ボタンクリック>マクロの登録で、先に作成したマクロを選択します。
 \x{fffd}Dこれで完成。図をクリックすると、先に登録した範囲の値が削除されます。

 削除する範囲に名前を定義しておくと、頻繁に表の形状が変わる場合などは便利かもしれません。
 \x{fffd}@削除する範囲を選択し、挿入>名前>定義 で、名前を入力し、追加を押します。
   例えば、名前をFruitと定義します。
 \x{fffd}AVisual Basic Editorで、標準モジュールに下記のSubからEnd Subまでの3行を入力します。
  ※既にマクロを記録している場合は、標準モジュールに表示されています。
  マクロ名(例ではDelFruit)が重複しないようにするか、マクロを下記に書き換えてください。

    Sub DelFruit()
        Range("Fruit").ClearContents
    End Sub

   コードを入力する詳しいやり方は、ライブラリのVBA体験Winをご参考に。
  エクセルの学校   (e1nw)VBA体験
https://www.excel.studio-kazu.jp/lib/e1nw/e1nw.html
 \x{fffd}B〜\x{fffd}Dは同じです。

 「ある期限を過ぎたら」という場合は、VBAを使うことになると思います。
 毎月1日になったら無条件にクリアするとか、それとも、
 シートの特定のセルに「7月」とあったら、8月1日以降にブックを開いた時にクリアするとか、
 クリアする前に確認のメッセージを出すとか出さないとか…
 詳しく詳しく書けば、親切な方がコードを書いて下さるのでは(甘い?)
 (YS)

 YSさん、マクロ登録の仕方詳しく書いていただきありがとうございました。
 YSさんの教えてくれたやり方を参考にやってみたいと思います。
 それでちょっとまたわからないことがあったら、聞いてしまうかもしれませんが。。。
 その時はまたよろしくお願いします!! (とも)

 YSさんの教えてくれたとおりにマクロ登録しました。
 選択した範囲のセルちゃんと消えました。すごいです!!
 どうもありがとうございました。
 欲張ってしまうのですが、、、
 "ある期限がすぎたら"の具体的に詳しく書きます。
 ○A2セルに"7月"という風に月を入力する。
  8月3日以降にそのシートを開いた時にセルの値を削除する方法。
  その時に"削除しても大丈夫ですか?"というようなメッセージがでると
  もっといいのですが。。。
  できるのでしょうか?月ではなくて年にしてもできるのでしょうか?
  よろしくお願いします!!
  (とも)

 まず、A2は2003/7と入力して下さい。そして表示形式をm"月"とします。
Sub Auto_Open()

    If Range("A2").Value + Month(1) < Now() Then
        btn = MsgBox("クリアしてもいいですか?", vbQuestion + vbYesNo, "削除の確認")
          Select Case btn
           Case vbYes
            Range("A5:A15").ClearContents
           Case vbNo
            MsgBox "中止しました。"
          End Select
    End If
End Sub
とすると(この場合はA5:A15がクリアされます。)出来ます。
自分はまだまだVBAを習得していません、If Range("A2").Value + Month(1) < Now() Then
の部分はもっといい方法があると思います。逆にだれか教えて下さい。(ケン)

やっぱり、親切な方がいらっしゃいましたね。ケンさん、ありがとうございます。(YS)

はいっ。
どうも助かりました。
ケンさんに教えていただいたやり方でやってみました!!
できましたっ!
ケンさん、YSさんありがとうございます。
これは月ではなく年にするばあいは
If Range("A2").Value + Month(1) < Now() Then
"Month(1)"のところを"Year(1)"に変更するだけでいいのでしょうか??
すみません。。。本当に初めてマクロをやるもので・・・。
よろしくお願いします!!(とも)

 1年後はそれでいいと思います。(ケン)

 (1)というのは1年後とか1ヵ月後という意味なんですか?
 すみません。こんな初歩的なことを・・・。(とも)

 そのつもりで書いてます。(ケン)

 ケンさん、本当にありがとうございましたっ!!
 助かりました☆
 これからマクロ頑張って勉強していきたいと思います!!(とも)

 日があいてしまったのですが・・・。 
 "Month(1)"のところを"Year(1)"に変更して、やってみたのですが。。。
 上手く値が消えません。。。
 年度を入れているセルは"C2"で表示形式を"平成"e"年度"としています。。。
 どうしてでしょうか?
 すみません。よろしくお願いします!!(とも)

 すいません。どうも未熟者なので前回のコードは、たまたまうまく動いただけのようです。
If Range("A2").Value + 365 < Now() Thenとして見てください。(ケン)

 いえ。
 できましたっ!!"365"と変えると。
 これってうるう年の時とかって、いちいちコードを変更しないといけないのですかね?
 すみません。。。一度に聞くこと出来なくて。。。
 よろしくお願いします。(とも)

 そうなります。本当はもっといい方法がきっと有るはずですが・・・勉強します。すいません。(ケン)

 いえいえ。
 どうもありがとうございました。私も勉強してみます!!(とも)

 If Rangeの前に 次のコードを挿入して下さい

    On Error GoTo imaoka
    nen = (Left(CStr(Now()), 4)) / 4
    nen = Application.WorksheetFunction.Find(".", nen, 1)
    If nen = 4 Then
        nen = 365
    Else
 imaoka:
        nen = 366
    End If
 ほれから365の代わりに変数nenを入れて下さい。
 これで閏年でもコードを書き直さなくていけまっしゃろ。
      (おいぼれ弥太郎)


 おいぼれ弥太郎さん、どうもありがとうございます!!
 コード挿入してみますっ!!(とも)

 >ともさん、上記のコードを下記のコードに書き換えておくんなはらんかなぁ。
 というのは、imaokaが他で発生したエラーも拾うてしまう危険性がありますさかい、↓
 のコードがベターやと思いまんねん。ろくに考えもせずにいらん手間取らせてすんまへ
 んなあ。
 ----
     nen = Len((Left(CStr(Now()), 4)) / 4)
    If nen = 3 Then
        nen = 366
    Else
        nen = 365
    End If
 ほなら、、、(おいぼれ弥太郎)

 いえいえ。おいぼれ弥太郎さんどうもありがとうございますっ!!
 早速コード変更しました。
 どうもでした!!(とも)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.