- ベストアンサー
日付が変わります。その2
下記のアドレスで「hallo-2007」さんにご指導いただいた内容が余りできの良くない私には何とか良いと思い挑戦していますが この場合、例えば「B4」のセルに入力があれば「G4」のセルに日付が表示されその後は日付が変更がないと言うことはできないでしようか http://oshiete1.goo.ne.jp/qa4485723.html?ans_count_asc=20 マクロの機能を使います。 下部にあるシート名のタブを右クリック=>コードの表示 で VBエディターが起動します。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 3 Then Target.Offset(0, 4).Value = Date End If End Sub をコピィして閉じます。 C列にセルで、値に変更があれば、そのセルの右へ4列目(G列)にその時の日付を入れる 詳しくない私をどうかご指導いただけませんか。 宜しく御願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは、 取合えず、新しいブックを作成して、試してもらうと良いと思います。 マクロでは計算式とは違い直接値を入れる事が出来ます。 Private Sub Worksheet_Change(ByVal Target As Range) ↑は、このシートのセルの値に変更があったら以下を実行する。 If Target.Column = 3 Then ↑更新されたセル(Target)が3列目の場合に下を実行する。(この場合はC列です) Target.Offset(0, 4).Value = Date ↑更新されたセルの4つ右の列の値に今日の日付を入れる。 End If ↑IFで指定した内容はここまで End Sub ↑Private Subで指定した内容はここまで 簡単に説明すればこんな感じです。 >例えば「B4」のセルに入力があれば「G4」のセルに日付が表示されその後は日付が変更がないと言うことはできないでしようか If Target.Column = 3 Then Target.Offset(0, 4).Value = Date の部分を If Target.Column = 2 Then Target.Offset(0, 5).Value = Date に変更すれば B列です。 もしB4セル限定であれば If Target.Address = "$B$4" Then と変更してください。 B列にセルに変更があったら同じ行のG列に日付が入ります。 その後、翌日にファイル開いてもそのままです。 日付を手入力で変更は出来ます。 ファイルを開く時にマクロを有効にする必要があります。 ツール=>オプションで マクロセキュリティが 高 であれば 中 または 低 に下げて開きなおしてください。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
>B4」のセルに入力があれば「G4」のセルに日付が表示されそ の後は日付が変更がないと言うことはできないでしようか Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address ="$B$4" Then Target.Offset(0, 5).Value = Date End If End Sub でよいのでは。 ただしB4セルの値を変えると、その日の日付に変更になるが、それも都合が悪いのかな。 そうするとどういうロジックで考えるか難しいよ。一例としてG4が空白なら日付をセット、空白でないなら変えないとか、セルの保護とか。 B列全体に考えるなら、前回等の通り If Target.Column = 3 Then 本質問のとおりなら Target.Offset(0, 5).Value = Date は Range("G4")=Date なぜ今回は単一セルの質問になったのかな。 質問を連発するより、VBAの基礎的なことを先に勉強すべきでは。 回答もらっても、使いこなせないと思う。 イベントとは。Targetとは。VBAで値をセットしたときはどうなる、Date関数の特殊性とか。
お礼
本当に有難うございました。 こんな私に懇切丁寧にご指導有難うございました。 試行錯誤の上何とか思い通りになりました。 この感激を忘れずに頑張ります。 今後ともご指導宜しく御願いします。
- mt2008
- ベストアンサー率52% (885/1701)
回答で示されたマクロが理解できないと言う事と判断しましたので、解説します。 内容を理解した上でご自分で修正してください。 Private Sub Worksheet_Change(ByVal Target As Range) 'ワークシートが変更された時に動くマクロです。 '引数Targetには変更されたセルやセル範囲が入ってきます。 If Target.Column = 3 Then '変更されたのがC列(3番目の列)かどうかをチェック '固定のセルアドレスをチェックしたいなら Target..Address = "$C$5" 'の様にすることでチェック可能 Target.Offset(0, 4).Value = Date '変更されたセルから右に4つ目のセル(G列)に日付を入れる End If End Sub
お礼
本当に有難うございました。 こんな私に懇切丁寧にご指導有難うございました。 今後ともご指導宜しく御願いします。
- magician_1
- ベストアンサー率26% (27/101)
以下のコードでB4に入力すると、g4に今日の日付が表示される。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 2 And Target.Row = 4 Then Target.Offset(0, 5).Value = Date End If End Sub
お礼
本当に有難うございました。 こんな私に懇切丁寧にご指導有難うございました。 今後ともご指導宜しく御願いします。
お礼
本当に有難うございました。 こんな私に懇切丁寧にご指導有難うございました。 試行錯誤の上何とか思い通りになりました。 この感激を忘れずに頑張ります。 今後ともご指導宜しく御願いします。