[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『テーブルの内容をマクロで消去』(みつ)
以下のようなシートとバラの2つの項目があるテーブルをつくりました。ボタン一つでテーブルの金額部分をすべて消去するプログラムを教えてください。
シート バラ
5,000 600
600 200
600 1000
500 200
400 600
200 1200
よろしくお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
レイアウトがさっぱり分かりません。 金額はどこに入力されていますか?
こちらのプログラムで、 [[20110209184943]] 『[談]シートレイアウトの投稿どうしてますか?』(momo)
1)現状のシートレイアウトと 2)求める形のシートレイアウト の2種類提示頂けますか? (稲葉) 2016/03/30(水) 12:42
[[20110209184943]] 『[談]シートレイアウトの投稿どうしてますか?』の使い方が分かりません。
切手の額面を計算するのに使うテーブルです。
1)金額はシート、バラの項目の下に金額を記載していっております。
2)求めて形のレイアウトはシート、バラの金額をすべて空欄にすることです。
(みつ) 2016/03/30(水) 13:05
使い方がわからないのに、プログラムを教えてくださいっておかしくないですか? 少しは自分で見てみたけど、それらしいものが見つからなかったとか。 少なくとも、コードを実行する力が無いのなら、なに教えても意味ありません。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_tejyun.html
検索すればすぐ出てきますので、少しは自分で努力する姿勢を見せてください。
本題のほうですが、現状の説明ですと全範囲を選択してDelキー押してくださいとしか言えません。 項目名も2つだけなら、全部消してから入力し直しせば良いのでは? (稲葉) 2016/03/30(水) 13:58
自分で試してみたプログラムです。
これを実行するとテーブルの値だけではなく行すべて消去になり、消去するのにかなり遅くなってしましました。
Private Sub ボタン1_Click( )
Dim i As Long
With ActiveSheet.ListObjects(1).ListRows
For i = .Count To 1 Step -1
.Item(i).Delete
Next i
End With
End Sub
(みつ) 2016/03/30(水) 14:15
だったらどうして使い方が分からないのですか?
しかも提示されたコードはListObjectでテーブルではないですよね? テーブルとはなにを指していますか?
一般的にエクセルでテーブルと言えば、1行1データベースを指すか http://allabout.co.jp/gm/gc/373733/ こちらのように、テーブル機能を指すと思われます。
こっちの理解力が乏しいためなにがしたいのかわかりません。 (稲葉) 2016/03/30(水) 14:22
(mm) 2016/03/30(水) 14:37
稲葉様、
1)しかも提示されたコードはListObjectでテーブルではないですよね?
はい、テーブルではないです。テーブルの内容を消去するプログラムが分からない為ご質問させていただきました。テーブルの機能は存じております。
稲葉様に教えてもらった事は何1つありませんが、お付き合いありがとうございます。
自分で調べてみた方が速そうです。
質問に対しての理解力がない、もしくは理解はしてるけど回答するスキルがないか分かりませんね。
(みつ) 2016/03/30(水) 15:00
一々嫌味言うためにレス要らないです。 (稲葉) 2016/03/30(水) 15:11
Excel2003ではリストと呼ばれていて、2007以降ではテーブルとして機能Upされており、 VBAでのオブジェクト名はListObjectの様です。
テーブルサイズはそのままで、タイトルや集計行を除いた値のみ消去するなら
Range(Sheets("Sheet1").ListObjects(1).Name).ClearContents
とか
Sheets("Sheet1").ListObjects(1).DataBodyRange.ClearContents
データの3行目だけなら
Sheets("Sheet1").ListObjects(1).DataBodyRange.Rows(3).ClearContents
その他、ListObjectのRangeプロパティを使うと、通常のセルと同様に扱えます。
With Sheets("Sheet1").ListObjects(1).Range MsgBox .Cells(2, 2).Value End With
(きまぐれ) 2016/03/30(水) 16:26
以下が自分で調べた結果です。テーブルの隣りには横には空白の列を1列挟まないとテーブル以外の値も認識して消えてしまいました。勉強させていただきありがとうございました。
Sub ボタン1_Click()
Range("A3").CurrentRegion.Offset(2, 0).ClearContents
End Sub
きまぐれ様に教えて頂きましたRange(Sheets("Sheet1").ListObjects(1).Name).ClearContentsがやりたい事でした。
教えてくださいました皆様ありがとうござしました。
(みつ) 2016/03/30(水) 17:15
Sub ボタン3_Click()
Range(Sheets("Sheet1").ListObjects(1).Name).ClearContents
End Sub
(みつ) 2016/03/31(木) 16:17
ふつうに H19 も ClearContents すればいいのですが?
それと、テーブルのデータ域の指定に、そんな【とってつけたような】記述はわかりにくいだけですね。 気まぐれさんが回答された DataBodyRange をなぜ使わなかったんでしょうかね?
With Sheets("Sheet1") .ListObjects(1).DataBodyRange.ClearContents .Range("H19").ClearContents End With
(β) 2016/03/31(木) 17:11
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.