数値や文字列などが入力されてるセルを自動で範囲指定し、計算式が入っていないところだけを、クリアするにはどのようなVBAを書けばいいんですか?
あれば、すごく便利なんですが。
どなたか、教えて下さい。

A 回答 (2件)

こんにちは



 マクロでしたら、以下でいかがでしょうか?

Sub Test()
On Error Resume Next
Cells.SpecialCells(xlCellTypeConstants, 23).ClearContents
End Sub

参考URL:http://www2.odn.ne.jp/excel/
    • good
    • 0

こんにちは



手作業でやるなら、
 「編集」-「ジャンプ」
 「セル選択」-゛定数゛にチェック-OK
 Delキー
の手順ですが、キーボードのみでも
 Alt+e, g, Alt+s, o, Enter, del(最初の2つをF5に変えると1ストローク少ない)
で可能ですね。

これをマクロにするなら、
Sub Macro1()
Selection.SpecialCells(xlCellTypeConstants, 23).Select
Selection.ClearContents
End Sub
となります。
Excel97でマクロ記録から作成しました。


以下teble 1969さんへのお願いです。
・次からはExcelのバージョンを書いてくださいね。バージョンが違うとできない操作もありますので。
・以前の質問のリンクの件は解決されましたか?解決していれば締め切りめきってくださいね。
 解決していなければ、補足要求と行きたいところですが、ちょっと古いので、再質問のほうが良いでしょうか。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=15828

この回答への補足

ありがとうございます。
ちなみに、EXCEL2000です。
それと、リンクの件は解決しておりませんが諦めて、締め切らせていただきます。

補足日時:2001/03/05 18:41
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

Q文字列と数字を含むセルから数値のみをとりだす関数と、文字列のみを取り出す関数があれば両方教えてください!

(Excel 2003 )
文字列と数字を含むセルから数値のみをとりだす関数と、文字列のみを取り出す関数があれば両方教えてください!

Aベストアンサー

データの中の数字と数字以外のパターンが一定なら、
LEFT関数 、RIGHT関数、MID関数で取り出すことができます。
「ABC1234」「1234ABC5678」などで、すべて同パターン。

「A1B2CD3」→「ABCD」と「123」でも、パターンが同じなら面倒ですが可能です。

ランダムな中からだと普通では不可能です。
http://srcedit.pekori.jp/tool/excelre.html
のアドインを利用して正規表現が使えるなら、
=REREPL(A1,"\d","")
で「A1B2CD3」→「ABCD」

=REREPL(A1,"\D","")
で「A1B2CD3」→「123」
ただし「123」は文字列なので、数値にしたければ、
=VALUE(REREPL(A1,"\D",""))
とします。

ご参考まで...

Qエクセル、関数の質問です。 範囲内の数値をランダムに表示させるやり方は分かるんですが、ある数値が出る

エクセル、関数の質問です。
範囲内の数値をランダムに表示させるやり方は分かるんですが、ある数値が出る確率を高くしたい場合の方法を教えて欲しいです。
説明下手、説明不足で申し訳ございませんが宜しくお願い致します。

1.00~1.99が出る確率は 20%
2.00~2.99が出る確率は 30%
3.00~3.99が出る確率は 50%

Aベストアンサー

こんばんは!

表示するデータは20というコトで良いのですね?
すなわち
1.00~1.99 は 4個
2.00~2.99 は 6個
3.00~3.99 は 10個
になると思いますので、安直な方法ですが・・・
↓の画像のように表を作成してみてはどうでしょうか?

G~I列に0.01刻みで数値を入力しておきます。
J2セルに
=RAND()
という数式を入れフィルハンドルでダブルクリック!

そして作業用として2列使用します。
D2セルに
=IF(ROW(A1)<=4,INDEX(G:G,MATCH(SMALL(J:J,ROW(A1)),J:J,0)),IF(ROW(A1)<=10,INDEX(H:H,MATCH(SMALL(J:J,ROW(A1)),J:J,0)),INDEX(I:I,MATCH(SMALL(J:J,ROW(A1)),J:J,0))))

E2セルに
=RAND()
という数式を入れD2・E2セルを範囲指定 → E2セルのフィルハンドルで下へ20行分コピー!
これではランダムに表示されているように見えないので
結果列のB2セルに
=INDEX(D:D,MATCH(SMALL(E:E,ROW(A1)),E:E,0))
という数式を入れ20行分下へフィル&コピー!

これでF9セルを押下するたびに
ランダムにお示しの割合でB列に表示されると思います。

※ 作業列や表が目障りであれば遠く離れた列に設けるか
非表示にしてください。

※ 他に良い方法があればごめんなさい。m(_ _)m

こんばんは!

表示するデータは20というコトで良いのですね?
すなわち
1.00~1.99 は 4個
2.00~2.99 は 6個
3.00~3.99 は 10個
になると思いますので、安直な方法ですが・・・
↓の画像のように表を作成してみてはどうでしょうか?

G~I列に0.01刻みで数値を入力しておきます。
J2セルに
=RAND()
という数式を入れフィルハンドルでダブルクリック!

そして作業用として2列使用します。
D2セルに
=IF(ROW(A1)<=4,INDEX(G:G,MATCH(SMALL(J:J,ROW(A1)),J:J,0)),IF(ROW(A1)<=10,INDEX(H:H,MATCH(SMALL(J:J,...続きを読む

QEXCELで、指定セルにある文字列が入っていれば、別のセルに指定文字を入れたい

EXCELで、指定するセルに、例えば「猫」という文字列が入っていれば、
別の指定セルに1という数字をいれ、
入っていなければ、0という数字を入れたいです。

IF関数を使えばよいのかと思ったのですが、
よくわかりません。
すみませんが教えていただけないでしょうか。

Aベストアンサー

指定セルをA1とします。

=IF(A1="猫",1,0)

でOKです。
文字列を見るときは、" "で囲めばいいのです。

Qセルに最初からある文字列を表示させておいて、そのセルを選択したら、その文字列の後から3桁数字を入力できるようにしたい

タイトルが長くてすみませんm(_ _)m
エクセル(97)に関しての質問です。

例えば、セルの中に最初から「15-G」という文字列を
表示させておいて、(ダブルクリックして編集という
形じゃなくて)そのセルを選択しただけで、
その文字列の後から3桁の数字を入力できるように
したいのですがいい方法はないでしょうか?

他にやってみた方法で、ユーザー定義(私が考えた定義→「"15-G"@」)でセルに3桁の数字(例えば567)を入力しますと、「15-G567」というように表示させる事が出来たのですが、何も入力されてない時は当たり前ですが空白のままです。
出来れば、最初から「セルの中の始めに15-Gという文字列を」表示させておきたいのですが…

Aベストアンサー

diashun です。
諦めずに挑戦するお気持ち、敬意を払います。
さて、エラー箇所を特定するためにデバッグモードでVBAを動かしてみましょう。
1.「Sheet1」のVBE編集画面を開いてください。
「Private Sub CommandButton1_Click()」の行とプロジェクトツリーの境界で右クリックしてください。
これでその境界部分に茶色の●が表示され、「Private Sub CommandButton1_Click()」の行も茶色の帯がつきましたか?
これは「ブレークポイント」といい、プログラムの実行を任意に中断する場合に指定します。
2.Excelの「Sheet1」に戻り、「CommandButton1」をクリックします。(この時、コントロールツールボックスのデザインモードを終了しておいてください)
3.VBEの[Sheet1」のブレークポイントのところで黄色い帯が表示されてプログラムの実行が中断されていますか?
ここまで「OK」でしょうか?
4.次の行からプログラムの実行を継続させます。
「F8」キーを一回押してください。
黄色い帯が次行(Set_String1)へ移動しましたか?
さらに「F8」キーを押すと「Module1」の「Set_String1」プロシージャVBE画面へ遷移するはずですが、ここまで「OK」ですか?
5.「F8」キーを一回ずつ押して一行ずつ実行してください。
エラー箇所があれば何らかのエラーダイアログとメッセージが表示されるはずです。その時「終了する」と「デバッグする」のボタンも表示されるので「デバッグする」のボタンを押すと、エラー行の場所が黄色い帯で表示されますので、その行内容とエラー表示メッセージの文言をお知らせ下さい。

>「Module1」の所が紺色に反転しています・・・は関係ないと思います。

ただ念のため「ThisWorbook」「Sheet1」「Module1」のVBEが下記の通り間違いないか、再確認もしておいてください。
●「ThisWorbook」のコード
Option Explicit

Private Sub Workbook_Open()
Dim strDefAry() As String
Dim i As Integer
ReDim strDefAry(0 To 9) As String '仮に10種類の文字列(ランダムな文字)を登録します。

strDefAry(0) = "15-G"
strDefAry(1) = "11-A"
strDefAry(2) = "15-V"
strDefAry(3) = "10-H"
strDefAry(4) = "11-R"
strDefAry(5) = "13-Y"
strDefAry(6) = "19-X"
strDefAry(7) = "00-D"
strDefAry(8) = "01-W"
strDefAry(9) = "15-K"

For i = 0 To 9
Sheet1.ListBox1.AddItem strDefAry(i)
Next i

Sheet1.ListBox1.Visible = True
ThisWorkbook.Sheets(1).Activate

End Sub

●「Sheet1」のコード
Option Explicit

Private Sub CommandButton1_Click()
Set_String1
End Sub

●「Module1」のコード
Option Explicit

Public Sub Set_String1()
Dim strCell As String, lngRowNum As Long, strDefStr As String
Dim i As Integer

strCell = InputBox("入力する列を「A,B,C,・・・」と入力して下さい。", "列入力")
strDefStr = Sheets(1).ListBox1.Text
lngRowNum = ActiveCell.Row
Call Set_String2(strCell, strDefStr, lngRowNum)
End Sub

Public Sub Set_String2(strCell As String, strDefStr As String, lngRowNum As Long)
Dim i As Integer

Range(Cells(lngRowNum, strCell), Cells(lngRowNum, strCell)).Activate
Range(Cells(lngRowNum, strCell), Cells(lngRowNum, strCell)) = strDefStr
End Sub

あと、Excelの「Sheet1」に「CommandButton1」と「ListBox1」は貼り付けられていますね?
以上、またご連絡をお待ちします。
でも、お忙しいならいつでもいいですよ。
気長にお付き合いしますので、(^_^)

diashun です。
諦めずに挑戦するお気持ち、敬意を払います。
さて、エラー箇所を特定するためにデバッグモードでVBAを動かしてみましょう。
1.「Sheet1」のVBE編集画面を開いてください。
「Private Sub CommandButton1_Click()」の行とプロジェクトツリーの境界で右クリックしてください。
これでその境界部分に茶色の●が表示され、「Private Sub CommandButton1_Click()」の行も茶色の帯がつきましたか?
これは「ブレークポイント」といい、プログラムの実行を任意に中断する場合に指定します。
2....続きを読む

Qエクセル任意の数値に近い数値を表示したいです。 例えば、小数点第一の数値が63.2であれば63.0。

エクセル任意の数値に近い数値を表示したいです。
例えば、小数点第一の数値が63.2であれば63.0。36.4であれば36.5といった具合です。

Aベストアンサー

バージョン問わないで正の数のみ扱いA1セルに元の値があるなら「=INT(A1*2+0.5)/2」でいいかも。


人気Q&Aランキング

おすすめ情報