痔になりやすい生活習慣とは?

こんにちは。教えてください。電話・FAXの一覧表を作成するのですが,しばしば変更になるため,そこに入力されている番号が,いつ入力されたものか(いつの時点での情報なのか)が分かるように,その入力年月日時刻を表示したいです。下記のQ&Aをみて,その回答通りのことはできるのですが,自分が作りたい表に置き換えた場合,どこをどういじればよいのか分かりません。ご教示いただけましたら幸いです。
私が作りたい表は,B列に会社名,C列に部署名,D列に担当者名,E列に電話番号,F列にFAX番号を入力する形式で,2行目に項目欄を設け,3行目から本文になります(行数はどんどん増えていきます)。で,B列を変更した場合には,同じ行のG列にその変更年月日時刻を,C列を変更した場合には同じ行のH列にその変更年月日時刻を,D列を変更した場合には同じ行のI列にその変更年月日時刻を,E列を変更した場合には同じ行のJ列にその変更年月日時刻を,F列を変更した場合には同じ行のK列にその変更年月日時刻を,自動的に表示するようにしたいです。

http://detail.chiebukuro.yahoo.co.jp/qa/question …

このQ&Aに関連する最新のQ&A

A 回答 (3件)

シート名タブを右クリックしてコードの表示を選ぶ


現れたシートに下記をコピー貼り付ける

private sub worksheet_change(byval Target as excel.range)
 dim h as range
 on error resume next
 for each h in application.intersect(target, range("B:F"))
  h.offset(0, 5) = now
 next
end sub

ファイルメニューから終了してエクセルに戻る
B:F列に記入する。
G:K列は事前に適切にセルの表示形式を設定しておく



#簡単のため「3行目以下に」の部分は省略しています


#通常,ご相談の用途では「データを削除した」場合は処理をスキップするような手当をしておく事が多いですが,今回はデータ消去も変更として記録します。

この回答への補足

すみません。
B列の会社名の前のA列に通し番号を入力することになりそうなのですが,現状でそれをしますと,F列にA列への入力年月日時刻が表示され,もともと入力されていたF列のファックス番号が消えてしまいます。セルに入力した年月日時刻を記録する対象を,B列からF列にする(A列の入力年月日時刻は表示しないようにする)には,どのようなコードにしたら宜しいでしょうか。
また,A列の通し番号の前に更にもう一列設ける必要が出てきた場合,A列の左に列を挿入すると,現状のA列がB列に,現状のB列がC列に・・・,現状のF列がG列になりますが,その状態で,セルに入力した年月日時刻を記録する対象を,C列からG列にするには,どのようなコードにしたら宜しいでしょうか。
最後に,B列とC列の間に,入力年月日時刻を記録・表示する必要のない「会社のひらがな読み」を入力する列を設けることになった場合,B列とC列の間に一列挿入して,現状のB列はB列のまま,現状のC列はD列になりますが,その状態で,セルに入力した年月日時刻を記録する対象を,B列と(C列を飛ばして)D列からG列にするには,どのようなコードにしたら宜しいでしょうか。

補足日時:2012/06/25 12:29
    • good
    • 0
この回答へのお礼

早々にありがとうございます。うまくいきました。ありがとうございます。また関連したご質問をさせていただくこともあるかも知れませんが,今後ともよろしくお願いします。

お礼日時:2012/06/25 11:47

はて?



捕捉のご質問を頂きましたが,
>F列にA列への入力年月日時刻が表示され,
>もともと入力されていたF列のファックス番号が消えてしまいます。

回答したマクロではそのようなことは起こりません。



>B列からF列にする(A列の入力年月日時刻は表示しないようにする)には,
>どのようなコードにしたら宜しいでしょうか。

最初からそのように回答していますが,いったいどういう事でしょうか?ご回答をお願いします。


キチンと回答を試してみて,上手くいかない所があれば具体的に状況を添えて追加ご質問ください。







>C列からG列にするには,

コードを見れば一目瞭然ですが。

変更前:
for each h in application.intersect(target, range("B:F"))

変更後:
for each h in application.intersect(target, range("C:G"))

とするだけです。




>B列と(C列を飛ばして)D列からG列にするには

変更後:
for each h in application.intersect(target, range("B:B,D:G"))

とします。
    • good
    • 0
この回答へのお礼

ありがとうございます。一点目の補足質問は,自分で色々いじっているうちに混同してしまったようです。教えていただいたコマンドをあらためて入力したところ,補足質問に記載したような現象はおこりませんでした。失礼しました。ほかの2点の補足質問にもご回答いただきありがとうございました。

お礼日時:2012/06/27 15:29

参考としているマクロのコードを次のようにすればよいでしょう。



Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count > 1 Then Exit Sub
If Target.Column = 1 And Target.Column > 6 Then Exit Sub
If Target.Value = "" Then Exit Sub
Application.EnableEvents = False
Target.Offset(, 5) = Now
Application.EnableEvents = True
End Sub

なおG列からJ列には#####のような表示になりますが十分に列幅を広げればよいでしょう。

この回答への補足

すみません。
B列の会社名の前のA列に通し番号を入力することになりそうなのですが,現状でそれをしますと,F列にA列への入力年月日時刻が表示され,もともと入力されていたF列のファックス番号が消えてしまいます。セルに入力した年月日時刻を記録する対象を,B列からF列にする(A列の入力年月日時刻は表示しないようにする)には,どのようなコードにしたら宜しいでしょうか。
また,A列の通し番号の前に更にもう一列設ける必要が出てきた場合,A列の左に列を挿入すると,現状のA列がB列に,現状のB列がC列に・・・,現状のF列がG列になりますが,その状態で,セルに入力した年月日時刻を記録する対象を,C列からG列にするには,どのようなコードにしたら宜しいでしょうか。
最後に,B列とC列の間に,入力年月日時刻を記録・表示する必要のない「会社のひらがな読み」を入力する列を設けることになった場合,B列とC列の間に一列挿入して,現状のB列はB列のまま,現状のC列はD列になりますが,その状態で,セルに入力した年月日時刻を記録する対象を,B列と(C列を飛ばして)D列からG列にするには,どのようなコードにしたら宜しいでしょうか。

補足日時:2012/06/25 12:30
    • good
    • 0
この回答へのお礼

削除の場合はスキップされるところまで対応したものをご教示いただきありがとうございました。うまくいきました。また関連したご質問をさせていただくこともあるかも知れませんが,今後ともよろしくお願いします。

お礼日時:2012/06/25 11:49

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

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

Q☆Excelエクセルで入力した日の日付を表示したいです☆

こんばんは!エクセルで、なにかデータを入力した横のセルに、その日の日付が自動的に入るような方法があれば、是非教えてくださいm(__)m横の列に手動で日付を入力すればよいといえばよいのですが^^;その列には、また別の日に、追加でデータを入力していきたいですので、前の日の日付もその日の日付も残るようにしたいんです。today関数とかじゃ全部その日になってしまいますよね。。。もし、データを入力しただけで、そのようなことができる方法があれば、是非教えてください。よろしくお願いしますm(__)m

Aベストアンサー

マクロを組むしかありません。過去の質問を検索すれば結構出てきますよ。
手動でいいなら、「Ctrl」キーを押しながら「;」キーで今日の日付になります。

QA1セルに入力したら、入力時間をA2セルに自動挿入

こんにちはtmgmです。

Excelでちょっと困っています。
「A1セルに文字を入力したときの時間をA2セルに表示する」ということがやりたいのですが、
実際やってみるとなかなか出来ませんでした。

A2セルの書式をhh:mmなどにして、セルに=if(A1<>"",NOW(),"")と書きました。
これで一応A1セル入力でA2セルに時間は挿入されますが、Excelの自動計算機能により、一度閉じてまた開いた場合や他のセルで自動計算を行うような入力をした際などに時間が更新されてしまいます。
時間が更新されてしまってはだめなんです。

かといってツール→オプションから自動計算を手動にすると、その他の計算(例えばSUM関数など)の自動計算に影響がでて、使い勝手が違ってくるし。。。。


どうすればよろしいんでしょうか?
お分かりになる方ご返答宜しく御願い致します。

Aベストアンサー

VBAで。

シート名を右クリックしてコードの表示を選び、出てきたVBE画面(何か書かれていたら消して)に書きます。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim r As Range
 For Each r In Target
  If r.Column = 1 Then
    r.Offset(0, 1).Value = Format(Now, "hh:mm:ss")
  End If
 Next r
End Sub

試すのはテスト環境で。

QEXCEL(IF関数)でCELLの色を変える。

例えば、IF関数で真ならセルの色を赤色にしたり、文字の色を変えたりする関数とかはあるのでしょうか?わかりません・・・知ってる方いらっしゃれば教えて下さい。

Aベストアンサー

こんばんは。

関数ではありませんが‥

<条件付き書式>ではダメなのでしょうか?

メニュー<書式>-<条件付き書式> です。

どのような条件を想定していらっしゃるのかわかりませんが、
<条件付き書式>については↓の参考URLをご覧ください。

▽条件付き書式・その1
http://homepage1.nifty.com/kenzo30/ex_kisosyo/ex_ks_syokyu4.htm

▽条件付き書式・その2
http://homepage1.nifty.com/kenzo30/ex_kisosyo/ex_ks_syokyu5.htm

参考URL:http://homepage1.nifty.com/kenzo30/ex_kisosyo/ex_ks_syokyu4.htm

Qエクセルで入力時間を更新させずに表示させたい

エクセル初心者です。シート内で複数の入力時間を、更新させずに表示させたいのですが、どのようにすればよいのでしょうか?
A1にある数値を入力したらB1にその入力時間を表示させ、一定時間後にA2に別の数値を入力すると、B2にその入力時間を表示させたいです。
B1、B2の入力時間とは、あくまでもそれぞれの入力した時の時間を表示させたく、また、表示後は時間の更新はさせたくないです。
”=NOW()”だと、入力のたびに過去の表示時間まで同時に更新されてしまい、また、複数の表示時間が全て同じ時間となってしまいます。
簡単な関数などでできれば助かりますが、マクロやVBAでないとできないというのであればやってみたいと思いますので、できる方法で教えてください。
よろしくお願いします。

Aベストアンサー

普通の操作は、時刻の入力は、CTRLを押しつつ:キーを押します。
ーー
VBAの勉強してない人には進められませんが、
シートタブを右クリック
コードの表示
Generalと見えているところをクリク
Worksheetを選ぶ
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub
と出てくるが無視
SelectionChangeと出ている部分をクリック
Changeをクリック
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub
となる。
この間にコードを入力する。
Targetが、セルの値を変化させたセルなので
その隣のセル Offset(0,1) に時刻を入れるのは
Target.offset(0,1)=Time
=dateにして書式で時刻だけ見せるほうが、入力日も残って、良いかもしれない。
ただしVBAででも隣に時刻を入れるとセルの値の変化イベントが起こり、ぐるぐる回りになるから、その機能を1時的に止めて、隣のセルに時刻をセットし、イベント機能を復活させる。
また、例えばA1:A30のセル以外は、自動時刻セットが困るので
例えば、A列以外のセルは除外のコードを入れる。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub
If Target.Row >= 31 Then Exit Sub
Application.EnableEvents = False
Target.Offset(0, 1) = Time
Application.EnableEvents = True
End Sub
細かく言えば、A列を入力後、DELで消したときの対策など必要だが
省略。
ーー
こんなにいっぱいVBAの色々なことが詰まっている内容を今すぐやろうというのはむりだよ。
まあ丸呑みしてこのキッカケでVBAを勉強してください。

普通の操作は、時刻の入力は、CTRLを押しつつ:キーを押します。
ーー
VBAの勉強してない人には進められませんが、
シートタブを右クリック
コードの表示
Generalと見えているところをクリク
Worksheetを選ぶ
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub
と出てくるが無視
SelectionChangeと出ている部分をクリック
Changeをクリック
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub
となる。
この間にコードを入力する。
Targetが、セルの値を変化...続きを読む


人気Q&Aランキング