[[20191129112217]] 『プルダウンの中身を選択したら別セルに日付が入力』(yamada) ページの最後に飛ぶ

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

 

『プルダウンの中身を選択したら別セルに日付が入力されるようにしたい』(yamada)

エクセルでステータス管理をしたくて、とあるプルダウンを選択すると
選択した日付が別セルに入力されるような仕組みを作りたいのですが
いまいち調べても当てはまるものがありません。

プルダウンの中身と入力されるセルを連動させたいと思っているのですが
その場合VBAで指定するんでしょうか。それともVLOOKUP関数などを用いてできるものなんでしょうか。ご教授お願い致します。

< 使用 Excel:Excel2013、使用 OS:Windows10 >


 >とあるプルダウンを選択すると 
 >選択した日付が別セルに入力されるような仕組みを

 選択後って意味なら 入力規則でリスト選択、そのセルをセル参照させるだけのような。。。
(GobGob) 2019/11/29(金) 11:34

わかりづらくてすみません。
例えば、A1にプルダウンがあるとして
・A1の選択を「対応中」にした場合、B1にその日の日付を入力する
・A1の選択を「対応完了」にした場合、C1にその日の日付を入力する・・・etc

といった感じにしたいのですが、マクロとか使わずともできますでしょうか(;´・ω・)
(VBAは絶賛勉強中の初心者です)
(yamada) 2019/11/29(金) 11:42


 VBAならできると思いますが、お勧めできませんね!
 ショートカットキーでCtrl+;で今日の日付入力できるので、みんなに覚えてもらったらどうですか!?

    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address(0, 0) <> "A1" Then Exit Sub
        Select Case Range("A1").Value
            Case "対応中"
                If Range("B1").Value <> "" Then
                    'B1が入力されていた場合
                ElseIf Range("C1").Value <> "" Then
                    'B1が空欄でも、C1に入力があった場合
                Else
                    Range("B1").Value = Date
                End If
            Case "対応完了"
                If Range("C1").Value <> "" Then
                    'C1が入力されていた場合
                ElseIf Range("B1").Value = "" Then
                    'C1が空欄でも、B1に入力がなかった場合
                Else
                    Range("C1").Value = Date
                End If
            Case Else
                If Range("B1").Value <> "" Then
                    '値が消された場合、B1の値は?
                End If
                If Range("C1").Value <> "" Then
                    '値が消された場合、C1の値は?
                End If
        End Select
    End Sub

(稲葉) 2019/11/29(金) 13:34


やはりお勧めではないですよね。
どうしても自動入力したいという上からの無茶ぶりでして…(;´・ω・)

ご丁寧な回答ありがとうございます。
広範囲に指定したい(A1からA10にプルダウンがある)ときは
セル部分を変えればいいのでしょうか。。。
質問だらけで申し訳ありません。
(ほんとにコマンド覚えてもらったほうがエクセル自体重くならないのでいい気がしてます…)
(yamada) 2019/11/29(金) 14:04


 こんな感じですかね!?
 まとめて変更されることもきっとありますよね。
 VBA入れても重くならないとおもいますよー。

 これいれて、次にいわれるのが「自動で入力されない」→セキュリティでマクロ無効になっていただけ
 ってオチが見えますね! ご苦労様です!

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim myTarget As Range
        Dim A列 As Range
        Dim C列 As Range
        Dim B列 As Range
        Set myTarget = Intersect(Target, Range("A1:A10"))
        If myTarget Is Nothing Then
            '何もしない
        Else
            Application.EnableEvents = False
            For Each A列 In myTarget
                Set B列 = A列.Offset(, 1)
                Set C列 = A列.Offset(, 2)
                Select Case A列.Value
                    Case "対応中"
                        If B列.Value <> "" Then
                            'B1が入力されていた場合
                        ElseIf C列.Value <> "" Then
                            'B1が空欄でも、C1に入力があった場合
                        Else
                            B列.Value = Date
                        End If
                    Case "対応完了"
                        If C列.Value <> "" Then
                            'C1が入力されていた場合
                        ElseIf B列.Value = "" Then
                            'C1が空欄でも、B1に入力がなかった場合
                        Else
                            C列.Value = Date
                        End If
                    Case Else
                        If B列.Value <> "" Then
                            '値が消された場合、B1の値は?
                        End If
                        If C列.Value <> "" Then
                            '値が消された場合、C1の値は?
                        End If
                End Select
           Next A列
           Application.EnableEvents = True
       End If
    End Sub

 ※1420 Application.EnableEvents 追記しました
(稲葉) 2019/11/29(金) 14:17

ご年配なので、マクロ無効にならないように気をつけます…
なんとかできそうです!!
ありがとうございました(´;ω;`)!!

(yamada) 2019/11/29(金) 15:40


コメント返信:

[ 一覧(最新更新順) ]


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