dポイントプレゼントキャンペーン実施中!

C1:C10に不特定の数字を入力したら、それぞれ対応する行のA1:A10に”完了”という文字を入力させたいのです。
また逆に、C1:C10の数字を削除したら、A1:A10の”完了”が消えるようにしたいのです。
マクロじゃないとできないと思うのですが、教えていただけないでしょうか。
急にこんな担当になって、他に得意な社員もいないので、あわてて勉強しているのですが追いつかなくて。

よろしくお願い致します。

A 回答 (3件)

No.2です。



>一括削除してもエラーの出ない方法・・・

とありましたので↓のコードに変更してみてください。

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C1:C100")) Is Nothing Then Exit Sub
Dim i As Long
If Selection.Count = 1 Then
If Target <> "" Then
Target.Offset(, -2) = "完了"
Else
Target.Offset(, -2) = ""
End If
Else
For i = 1 To 100
If Cells(i, 3) = "" Then
Cells(i, 1) = ""
End If
Next i
End If
End Sub

※ 1~100行目までのデータとしています。
※ ちゃんと検証していませんので、ご希望通りの動きにならなかったらごめんなさいね。m(_ _)m
    • good
    • 0

こんばんは!


VBAがご希望だということなので・・・
一例です。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてC列にデータを入れてみてください。

Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
If Intersect(Target, Range("C1:C10")) Is Nothing Or Selection.Count <> 1 Then Exit Sub
If Target <> "" Then
Target.Offset(, -2) = "完了"
Else
Target.Offset(, -2) = ""
End If
End Sub 'この行まで

※ 不特定の数字でなく、空白以外ならというコトにしています。
※ 1セルずつの操作でないとA列データは変化しません。
(複数セルを選択 → Delete ではA列はそのままです)

こんなんで参考になりますかね?m(_ _)m

この回答への補足

こんばんは

ありがとうございました。

早速試してみました。
すばらしいですね。

本当は( C1:C100 )なので、
    Range("C1:C100").ClearContents で試してみました。

tom04さんのおっしゃるとおり、エラーになりました。

たぶん、一括削除してもエラーの出ない方法があるのだと思いますが、
複雑なのでしょうか。

できたら教えてください。
一度に質問しておけばよかったのに申し訳ございません。

よろしくお願いします。

補足日時:2012/08/27 21:04
    • good
    • 0

マクロじゃなくても、A1に



=IF(ISBLANK(C1),"","完了")

として、A10までフィルドラッグでいいようだが、これとは違うことでしょうかね。

この回答への補足

再質問なのですが、どこに書いたらいいのか分からなくて。
違っているかもしれませんがここに書きます。


早速のご回答、ありがとうございます。
こちらの説明が不足していました。

A行には関数が入れられないのです。
そこにはツールボックスからの入力もあるので関数が消えてしまいます。
うまく説明ができないのですが。

VBA出いれる方法を教えていただけませんか。

よろしくお願いいたします。

補足日時:2012/08/27 17:21
    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A