|
これがTheCardの実例だって |
今宵は、一つ、もしパソコンの世界に縄文時代があったとして振り返ってみます。
昔々、自分は、NEC製のPC-9801シリーズのパソコンを仕事で使っていました。
もう三十年も前の話で、ウインドウズも未だ先の話で、マルチタスクもありません。
起動させるシステムが、MS-DOSと呼ばれており、フロッピイディスクを使いました。
ガシャガシャとデータを読ませていた時代ですが、フロッピーすらなくなってしまった。
フロッピーで一枚、たった1.44MBのデータ量を読みのに、一分以上掛かります。
しかも、他のプログラムを動かしたかったら、フロッピーを差し替えねばなりません。
まあ、こんな非効率なパソコンでも、OA化で事務効率が向上するというのです。
思い出すのは、ワープロは一太郎、表計算はロータス1-2-3が定番の時代。
エクセルの前身のMultiplanなるソフトもありましたが、ロータスが圧倒的でした。
とにかく、CPUが非力で、画像出力もグラフを出せるのがせいぜいなところです。
動画を見る夢のまた夢で、十年も二十年も先の話だったのを思い出しました。
つまり、パソコンは、もっぱらテキストデータの管理が主力だった時代の事務機。
ラップトップPCもないし、オフィスの隅っこに置いて、みんなで共用していましたな。
|
左から、8-5-3.5インチの各FDサイズ |
そんな時代、”The CARD”なるカード型データベースソフトが、発売されました。
表計算ソフトでは、各行の項目に移動しながら入力しますが、これは違います。
カード上の画面に入力に必要なセルの項目が配置されており、終われば登録。
パソコン内部のメモリーにデータが蓄積されて、必要に応じて作表もできました。
登録した情報は、紙のカードをめくるように、一件一件を移動させて見られます。
まあ、台帳の管理などに便利と分かって、会社で購入してもらったのが懐かしい。
それから、販売店に頼んで、アスキーから講師を呼んで講習会まで開きました。
女性の営業部長で、苗字が”弦”と書いてあったので、珍しく未だ覚えています。
それで、社内で三回に分けて三十人くらい参加してくれましたが、盛況でした。
このソフトを何に使ったかと言うと、試験成績の登録に役立ったと思いますな。
そんなソフトも、ウインドウズ版のVer8.0を最後に消えてしまったのが実に残念。
愛用者だったし、このソフトのマニュアル・CDまで捨てずに保管しておるのです。
未だに使い続けている人も多くて、そういった
愛用者のサイトまで見つけました。
そこでは、この十一月に、最終版のCDをメルカリに出品と掲示板にありますな。
カード型は、表のように全体を見渡す作業が必要でない時に、本当に便利。
だから、件数が溜まって肥大したデータは、件別にカード化して見たくなります。
それで、エクセルの隠れ機能として、カード閲覧は意外に知られておりません。
見出しの範囲を選択して、ショートカットキーで、Alt+A+D+Oと押します。
すると、カードが現れまして、件別に移動できたり新しいデータの登録も可能。
ただ、列を飛び飛びで選択したカード表示は出来ないので、ならばマクロです。
やぱり、エクセルを使いこなすのだったら、VBAを少しぐらいは覚えましょうか。
なので、参考までサンプルコードをこさえてみたので、お使いくださるとうれしい。
非常にシンプルな構文ですから、現在使用中の表に加えるのも楽な話です。
というわけで、懐かしいカード型データベースを思い出して、一気に書きました。
というのも、インドの合弁会社から送られてくる議事録が、エクセルの表形式で作られており、会議が連続すると、とふんどしみたいにだらだらで内容がぶら下がって来る始末で、何が書いてあるのか、さっぱり分からなくなるし、それを改善するためにユーザーフォームをぶち込んでみた分けでして、そんなことからカード型データベースの記憶が蘇ってしまい、つい投稿してしまったということなのでした。
<VBAサンプルコード」>
|
Alt+D+Oキー呼び出し結果 |
|
VBAによるユーザーフォーム |
①ユーザーフォーム1(書式・表示の設定)
Dim i As Long
Dim j As Long
Option Explicit
'変数宣言
--------------------------------------------------
Private Sub CommandButton1_Click()
'記録したデータ(行)を再登録させない(変数 i, j の利用)
If j > 1 And j < i Then Exit Sub
ActiveSheet.Cells(i, 1).Value = UserForm1.TextBox1.Value
ActiveSheet.Cells(i, 2).Value = UserForm1.TextBox2.Value
ActiveSheet.Cells(i, 3).Value = UserForm1.TextBox3.Value
'登録後、各ボックスをクリア
UserForm1.TextBox1.Value = ""
UserForm1.TextBox2.Value = ""
UserForm1.TextBox3.Value = ""
End Sub
---------------------------------------------------
Private Sub SpinButton1_Change()
'登録データの最下行より一つ下の行番号を取得
i = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
'スピンボタンで移動させる行番号の最大・最小値の設定
UserForm1.SpinButton1.Min = 2
UserForm1.SpinButton1.Max = i
'スピンボタンの押し下げに対応した、行列のデータをボックスに表示
UserForm1.TextBox1.Value = ActiveSheet.Cells(SpinButton1.Value, 1)
UserForm1.TextBox2.Value = ActiveSheet.Cells(SpinButton1.Value, 2)
UserForm1.TextBox3.Value = ActiveSheet.Cells(SpinButton1.Value, 3)
'スピンボタンの値を変数で登録
j = SpinButton1.Value
End Sub
---------------------------------------------------
Private Sub UserForm_Initialize()
'テキストボックスの初期値を設定
'ブランクが良いなら、""
UserForm1.TextBox1.Value = "Item A"
UserForm1.TextBox2.Value = "Item B"
UserForm1.TextBox3.Value = "Item C"
End Sub
---------------------------------------------------
②Module1(クリックボタンでユーザーフォームの表示)
Sub Button1_Click()
Load UserForm1
UserForm1.Show vbModeless
End Sub
※日本語のエクセルでは、”ボタン1_Click”と出ますが書き換えています。
理由は、インド人へサンプルコードを渡す時に、日本語ではエラーが出るため。
いいねと思ったら、二つポチっとね!