親子におすすめの新型プラネタリウムとは?

会社で勤務時間をEXCELで管理することになりました。(タイムカードのように)
毎日、出勤時、退勤時にその時刻を入力していく必要があり、少しでも操作の手間を省きたいので、
ボタンのようなものを設置して、今の時刻が表の中の必要なところに入るようにしたいのですが、
EXCELでそういうことはできますか?

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

A 回答 (5件)

可能なのだが、エクセルVBAを知ってないと、うまく行かないし、他人にデータ入力を任せる場面があるなら、それなりの防御機能を考えないとだめです。


しかし今でも、誤ったら他人の行にデータを入れ放題ですか。
こういうのはお金(給与)や名誉(遅刻)に関連することで、個人が所有CDの整理表を自分で作るなどとは違うのです。
エクセルなどというソフトはそういうことに適してないのです。
既に回答で言及の在るフォームなどを使って、他人(他行)のデータは隠したり(見えないように)し足りは出来ますが、VBAも中級程度のならないと。ある程度システム思考に慣れないと無理です。
CTRL+:、CTRL+;などの操作を覚えてもらうほうが良いでしょう。ボタンクリックとそう手間は変わらない。
    • good
    • 6

>EXCELでそういうことはできますか?


他の方々がおっしゃるよう 出来ます。
但し VBAと機能の知識が必要になります。
実験として以下を試してみてください。
新しいシートで
   A    B  C
1写真番号 日付 時刻

と訓日して
 C列を選択 セル の書式を 日付
 D列を選択 セル の書式を 時刻
にしておきます。
シート名のタブを右クリックして コードの表示 をクリック
VBエディターが起動するので
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 2 Then Exit Sub
Target.Offset(0, 1).Value = Date
Target.Offset(0, 2).Value = Now
Target.Offset(0, 2).Value = Now - Date
Target.Offset(1, 0).Activate
End Sub
を貼り付けて閉じてください。
B列に 適当に社員番号を 入れてください
C列に 日付
D列に 時刻が入ります。
VBAについての実験と思ってください。

更に必用な機能がありますので
http://excelvba.pc-users.net/index.html
などのVBAについての勉強のサイトがありますので
一通り目を通して見られることをお勧めします。
    • good
    • 6

マクロを利用する事になります


基本は
ユーザーフォームでボタンに
ActiveCell=Now
とコードを書き込めば、選択されたセルに現在時刻情報が代入されます

>表の中の必要なところに入るように

と言うことであれば、必要なセルを選択するマクロを前出のコ-ドの手前に作る必要が出てきます
マクロはシートの構成によって変化してしまいますので現時点の情報だけでは

>EXCELでそういうことはできますか?

の質問には<可能です>としか回答できません
    • good
    • 4

時間を入力したいところ(セル)で「Ctrl + :」したら時間が入りますがこれが一番簡単では、



なお「Ctrl + ;」なら年月日が入力出来ます。
    • good
    • 7

(1)ボタンを作りボタンの上で右クリックしマクロの登録



(2)新規作成

(3)開いたModuleが 下記のようになっていることを確認
Sub ※オブジェクト名_Click()

End Sub

(4)下記のように書き換える。
Sub ※オブジェクト名_Click()
Range("A1").Value = Format(Now, "hh:mm")
End Sub

ただし、セルのA1に時刻を書く場合のコードになりますので
A1の部分を変更してください。

秒まで出したい場合は"hh:mm:ss"になります。
    • good
    • 5

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

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

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

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

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

Qエクセルで打刻(タイムレコーダ)

教えてください。

現在業務管理のためエクセルを使用しています。
タイムレコーダ(打刻ボタン・・・出社/退社)も同シートにはめ込みたいのですが
プログラムを作成するしか方法はないでしょうか?

希望は、「出社」「退社」の打刻ボタンがあり
ボタンを押すと、その日の出社/退社欄に時刻が入力されるような感じです。

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

Aベストアンサー

No.1です。

> また、一度押したら確定(押し直しができない)とすることはできますでしょうか?

はできるのですが、どこまで徹底的にやるかでやり方は変わってきます。

(1)ボタンを押したらそのボタンは押せなくなり、一度ブックを閉じて再度開いても、その日の日付が入力されていたら、該当するボタンを押せないように設定する。

とするのは簡単です。しかし、これには抜け道があり、いったん入力した時刻を手動で削除し、ブックを開き直すと、またボタンが押せるようになってしまいます。

そこで、
(2)シート保護をかけて、ユーザは直接管理表のセルに入力したり削除したりできなくする。(ユーザが入力するセルだけは、セルの書式設定の「保護」からロックを解除する)
シート保護にはパスワードを設定し、ユーザが保護を解除できないようにする。

という手が考えられます。しかし、画面からシート保護をかけると、マクロの中でもセルに時刻を入力することができなくなるのです。したがって、

(3)マクロの中でパスワードでいったんシート保護を解除し、時刻を表示したら再びパスワードをつけてシート保護をかける。

という手があります。あるいは、画面からはセルの変更はできないが、マクロの中からはできる、というモードにマクロで設定することもできますが、どちらにしろマクロの中にパスワードを埋め込む必要があります。

これも、ちょっと詳しいユーザがいてVBAの画面を開いてマクロの中を覗いてしまうと、パスワードが丸見えになり、結局保護は破られます。

それで、最終手段として、

(4)マクロにパスワードをかける
ということができます。この設定をすると、マクロの中身を見ようと思っても、パスワードがないと見られなくなるので、さすがにユーザは変更できなくなると思います。

それで、どこまで徹底してやるか、というのが問題です。とりあえず(1)の段階までだけやる方法をご紹介します。

縦横が逆だったということなので、今度はA列がタイトル行で、1行目のB列より右に日付が入っており、出社時刻が2行目、退社時刻が3行目に入るものとします。

マクロをそれぞれ以下のように変更してください。

Private Sub CommandButton1_Click()
 Cells(2, Day(Date) + 1).Value = Time
 CommandButton1.Enabled = False
End Sub

Private Sub CommandButton2_Click()
 Cells(3, Day(Date) + 1).Value = Time
 CommandButton2.Enabled = False
End Sub

それから、左側のThisWorkbookという文字をダブルクリックしてください。新たに白いシートが右に出ます。
そこに、以下のマクロをコピーして貼り付けてください。

Private Sub Workbook_Open()
 With Worksheets("Sheet1")
  If .Cells(2, Day(Date) + 1).Value = "" Then
   .CommandButton1.Enabled = True
  Else
   .CommandButton1.Enabled = False
  End If
  If .Cells(3, Day(Date) + 1).Value = "" Then
   .CommandButton2.Enabled = True
  Else
   .CommandButton2.Enabled = False
  End If
 End With
End Sub

これは、ブックが開かれたときにボタンの押せる/押せないを設定するマクロです。

上に書いた(2)~(4)のうち、ここまでやりたい、というご希望があればアドバイスをしますので、補足をお願いします。

No.1です。

> また、一度押したら確定(押し直しができない)とすることはできますでしょうか?

はできるのですが、どこまで徹底的にやるかでやり方は変わってきます。

(1)ボタンを押したらそのボタンは押せなくなり、一度ブックを閉じて再度開いても、その日の日付が入力されていたら、該当するボタンを押せないように設定する。

とするのは簡単です。しかし、これには抜け道があり、いったん入力した時刻を手動で削除し、ブックを開き直すと、またボタンが押せるようになってしまいます。

そこで...続きを読む

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

試すのはテスト環境で。

Qダブルクリックすると現在の時刻が表示されるVBA

セルA3~A11の範囲でダブルクリックすると現在の時刻が表示され、もう一度ダブルクリックしたら再び空白表示にするVBAはどの様に組めば宜しいでしょうか?

Aベストアンサー

No.1です。

セルが結合されている場合、「Target」には結合されたセル範囲が格納されていますので、
(今回の場合、A3セルを選択すると A3:E3 の範囲が「Target」となります)
このような場合はA3セル(選択セルの一番最初のセル)の状態を見る必要があると思いますので、
↓のようなコードにしてみてはどうでしょうか?

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("A3:A11")) Is Nothing Then Exit Sub
Cancel = True
With Target(1) '←ココを訂正
If .Value = "" Then
.Value = Now()
.NumberFormatLocal = "h:mm"
Else
.Value = ""
End If
End With
End Sub

のような感じで・・・m(_ _)m

No.1です。

セルが結合されている場合、「Target」には結合されたセル範囲が格納されていますので、
(今回の場合、A3セルを選択すると A3:E3 の範囲が「Target」となります)
このような場合はA3セル(選択セルの一番最初のセル)の状態を見る必要があると思いますので、
↓のようなコードにしてみてはどうでしょうか?

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("A3:A11")) Is Nothing Then Exit Sub
Cancel = True
With Target(1)...続きを読む

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

Qエクセルのセルにカレンダーを表示させ、日付をセルに入力させたい

エクセルについて教えて下さい。

エクセルのセルをクリックすると、
カレンダーのようなものが表示され、
マウスで選択すると、
セルに日付が入力されるようにするには
どうしたらよいですか?

すみませんが、宜しくお願い致します。

Aベストアンサー

#02です。foo-mさんがVBAをお使いになるなら、以下のサンプルをいじってみてください。

このサンプルはC4セルがクリックされたときにカレンダーコントロールを表示して、日付を選んだらその日付をC4に書き込み、カレンダーコントロールを閉じるマクロです。

Private Sub Calendar1_Click()
Selection.Value = Calendar1.Value
ActiveSheet.Calendar1.Visible = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$C$4" Then
ActiveSheet.Calendar1.Visible = True
End If
End Sub

マクロはシートのモジュールとしてペーストして下さいね

QExcelのマクロでボタンを押すと数が1足されるようにするには?

とあるイベントで
来客者の人数を調べたいと思いました。
紙に正の字を書いていってもいいのですが
折角なので、後のグラフをつくったりする作業がやりやすいように
PCで処理しようと思いました。
しかし、いちいち数をけして打ちなおしていくのは
あまりにも面倒です・・・
街灯の人数調査(?)の人がもってる
カウントできる機械のようなものも持っていませんし・・・

例えばマクロを使用し
ボタンを押すとセル内の数が1足されるように
設定したいのですがどうすればよいでしょう?
もしくは、そういったことは可能でしょうか。

ワンクリック(もしくはそれに準ずる簡単さ)で
カウントがとれればマクロでなくても構わないです。
Excelあまりいじったことがないので
教えていただければ幸いです。

また、マクロでそういったことができないのであれば
Excel以外でもカウントをとることができるものがあれば
合わせて教えていただけると嬉しいです。
よろしくおねがいします。

Aベストアンサー

Range("A1") = Range("A1") + 1

と書いたマクロを適当なボタンに登録して下さい。
A1に初期値を記入しておけば、ボタンをクリックする毎に1ずつ加算されます。

Q(Excel)あるセルに文字を入力しただけで、同じブック内のほかのワークシートにも、同じ文字が自動的に入るようにするには?

こんにちは。
質問内容はタイトルのとおりです。

あるワークシートのあるセルに文字を入力すると、ほかのワークシートのセルにも同じ文字が自動的に書き込まれる方法を知りたいです(ブックは同じ)。複数のワークシートを制御するには、やはりマクロを使うのでしょうか?

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

Sheet1のA1にたとえば「100」と入力しますね。
Sheet2のA1に、これと同じ数値を表示するには、
 =Sheet1!A1
でOKです。

数式をいれるのが苦手なら、
Sheet2のA1セルで「=」を入力すると、数式入力状態に入りますから、
ここでSheet1のシートタブをクリックし、
リンクしたいA1セルをクリックしてEnterすると、
自動的にさきほどと同じ式が入ります。


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

人気Q&Aランキング