アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルで、ある申請用紙のフォーマットを作り、申請者・申請日・申請理由などを記入・印刷します。申請書は毎回1~5行程度の内容ですが、都度の申請内容をすべて履歴として別シートに累積しておきたい(過去から「誰が、いつ、申請を出しているか」が一目瞭然のリスト)場合、どういったやり方が一番簡単且つシンプルでしょうか?

簡単なマクロボタンで、誰でも操作が簡単な風にしたいのですが、マクロはほとんど初心者でやり方が分からず・・・どなたか良いアドバイスをお願いします。

A 回答 (6件)

空行が気になるなら、挿入してから空行を消すのではなく、挿入する前に、データがある行だけの行全体をコピーして挿入すれば良いです。


あるセルを選択して、そのあとはショートカットキーを組み合わせるだけで、データのある行だけの行全体を選択できるので、それをマクロ記録すれば良いです。
    • good
    • 0
この回答へのお礼

教えて頂いた通りにやってみました!
申請用紙の記入されたセルだけをCTRL+Shift+↓→ で範囲指定し、リストの方に挿入していく形のマクロを作ってみたら出来たので、これで理想のものが出来ました! 本当に有難うございました。
返信遅れて申し訳ありませんでした。。。

お礼日時:2009/02/25 00:56

No.1です。


No.5さんご提案のCOUNTA()を使ったマクロを作ってみました。

申請用紙のシート
 A2セルに申請日
 B3セルに申請者
 C4セルに申請理由
 ボタンにMacro1()を割り当て

履歴のシート
 A列に申請日
 B列に申請者
 C列に申請理由
 D1セル =COUNTA(A:A)

Macro1()の内容

Dim Shinseibi As Long
Dim Shinseisha As String
Dim Riyuu As String
Dim Ichi As Integer

Sub Macro1()
Shinseibi = Cells(2, 1)
Shinseisha = Cells(3, 2)
Riyuu = Cells(4, 3)
Sheets("履歴").Select
Ichi = Cells(1, 4) + 1
Cells(Ichi, 1) = Shinseibi
Cells(Ichi, 2) = Shinseisha
Cells(Ichi, 3) = Riyuu
End Sub

基本はこんな感じでいけると思いますが、どうでしょうか。
    • good
    • 0
この回答へのお礼

私にはまだ難しいみたいです。。。申請用紙の記入されたセルだけをCTRL+Shift+↓→ で範囲指定し、リストの方に挿入していく形のマクロを作ってみたら出来たので、それでやってみます。
本当にレベル低すぎですみません・・・有難うございます!!

お礼日時:2009/02/25 00:52

>入力フォーム(一覧表)にある最終行を、vlookupやindex関数で印刷用シートに参照させるテクが分かりません



必ずデータが入っている列をのデータ数を数える
例:
=COUNTA(A:A)
たとえば表題や項目名が有ったとしても最終行の行番号が求められます
後は申請書の入力欄に
=OFFSET(データシート!A1,COUNTA(データシート!A:A)-1,目的列)
とすればいいです。
オフセット関数は基点が0なので目的列はCOLUMN-1になるので注意。
---------------

申請用紙に入力したものを一覧の最終行に追加する行為はマクロでないと難しいのですが。

Range("A65536").End(xlUp)
でデータの最終行を求めて
Offset
で位置を指定してデータを挿入する、初歩的なマクロですから挑戦してみてください。
    • good
    • 0
この回答へのお礼

=COUNTA(A:A), OFFSET ともに初めて使いました。便利な式ですね。今後活用します! このやり方でも出来ましたが、最後のマクロ部分がうまく繋がらず・・・私にはまだ難しいみたいです。。。申請用紙の記入されたセルだけをCTRL+Shift+↓→ で範囲指定し、リストの方に挿入していく形のマクロを作ってみたら出来たので、それでやってみます。
本当にご指導有難うございました!

お礼日時:2009/02/25 00:55

1)申請用紙の、申請内容5行(内容が1行しかなくても、とりあえず5行)を、行選択してコピー。


2)履歴用別シートの先頭行(1行目は項目名になると思うので、2行目)に、コピー内容を挿入。
この一連の作業を、「ツール - マクロ - 新しいマクロの記録」で記録してみましょう。
そして、その記録したマクロをボタンに割り当ててみましょう。

内容が5行に満たない場合は、空白行も挿入されますが、それなりの履歴リストができあます。
オートフィルタで、目的のデータを抽出することもできます。

このやり方だと、65536行までという行数制限ができてしまいますが、13107回までは大丈夫で、単純に365日で割ると、1日あたり35.9回まで大丈夫という計算になります。
なので、頻度によって、履歴用シートを、1年ごとにしたり、2年ごとにしたり、半年ごとにして、そのつどマクロを書き換えればやっていけます。

徐々にマクロを勉強していけば、その都度マクロを書き換えなくても、シートが一杯になったら自動的に次のシートを作るというようなマクロも作れるようになります。

この回答への補足

やってみたら出来ました!が、やはりなんとなく空白行が気になります。一連のマクロの最後に、リストの空白行を削除する、といったコマンドを追加する事はかなり難しいでしょうか・・・?込み入ってくる場合は、やはり参照式などでのやり方を考えて見ます。

補足日時:2009/02/19 01:15
    • good
    • 0

入力用のシートを一覧表で作成(もしくは入力フォームを作成)。


入力フォームの最終行を印刷用シートの必要な項目にVLOOKUPやINDEX関数で参照。
印刷のマクロボタン作成(もしくは入力フォームの完了で印刷マクロ動作実施)。

こんなもんですかね。

この回答への補足

入力フォーム(一覧表)にある最終行を、vlookupやindex関数で印刷用シートに参照させるテクが分かりません・・・そこを聞いてもいいでしょうか?ヘルプを見てもどうもよく分からず。。。

補足日時:2009/02/19 00:50
    • good
    • 0

ご希望の回答から外れますが、ご質問のような用途ならAccessの方が適しているものと考えます。


実際、以前勤めていた会社で同様の処理をAccessやLotus Notesで組みましたが、そんなに手間がかかるものでもなく、Excelでやるよりは将来的な拡張や応用に優れていると思います。

一例として参考URLを挙げておきますので、ご検討されては如何でしょうか。
(Accessは導入されていない、導入出来ないとのことであればスルーして下さい)

参考URL:http://www.accessclub.jp/beginer/index.html
    • good
    • 0
この回答へのお礼

アドバイス有難うございます。ACCESSで作る程は件数が出ないと思うのと、Accessを全く使い慣れていないユーザーがほとんどなので、エクセルの方が何かと導入しやすいかと思ってます。でも、本当に有難うございました!!

お礼日時:2009/02/19 00:54

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