• 締切済み

エクセルの質問です。開くたびに数字が増える番号をつけたい

開くたびに番号がひとつずつ増えるようにしたいのです。 今日朝1番目に開いたから1番 夕方もう一度開いて2番 次の日の朝開いて3番というように番号をふっていきたいのですが。 宜しくお願いします。

みんなの回答

  • camputer
  • ベストアンサー率64% (22/34)
回答No.4

 こんばんは,camputerです.  ??  実行時エラー’9’ですか? 「sheet1」という名前のシートがあるかどうか,念のため 確認してみてください. >前回教えていただいた、一定のセルの中身が変わったときに数字が増えていくようになるChangeのプログラム~  selectionChangeイベントでしょうか?これについては,「特定のセル限定」でなく, 「どこでもいいので,選択されているセルの場所が変更された際」に勝手に動き出します. 試しに,下のコードをコピペしてみてください. 【テスト3】 ※コピペする場所:Altを押しながらF11を押して出てきた画面の左上の 「Sheet1(Sheet1)」(白い四角っぽいやつ)をダブルクリック. 右側の白いスペースに貼り付け. Private Sub Worksheet_selectionChange(ByVal Target As Range)  Sheets("sheet1").Cells(1, 1) = Sheets("sheet1").Cells(1, 1) + 1 End Sub 1度保存して,選択したセルをチョコチョコと移動させてみてください. セルの値を変更しなくても,選択した部分が移動するだけでいいです. いかがでしょう?セルA1の値が勝手に増えたでしょうか??? もしも >一定のセルの中身が変わったときに数字が増えていくようになるChangeのプログラムは、その一定のセルのアドレスをプログラムのどこに入れればよいですか。  というのを作る場合にはちょっとややこしくなります.下のような考え方でプログラムを作ります. (大分,質問タイトルから話がずれますが...) 「タイトル:どこでもいいので,セルの値が変更された時に勝手に動く   もしも 変更されたセルが「C1」だった場合     「セルA1の値」を,「セルA1の値+20」に変更   もしも終わり プログラム終わり」 【テスト4】 ※コピペする場所:テスト3と同じ Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Address = "$C$1" Then   Sheets("sheet1").Cells(1, 1) = Sheets("sheet1").Cells(1, 1) + 20  End If End Sub また1度保存して,いろんなセルの値を好き勝手に書き換えてみましょう. 今度はセルを移動するだけでなく,値を書き換えてください. ・・・するとセルC1の値を変更したときのみ,A1の値が20づつ増えたでしょうか?? 回答ここまでです.(ぜんぜん質問タイトルと違うこと話してますけど^^;) >camputerさんはプログラマーの方ですか?プログラマーってすごいですね!!  いえ似非プログラマです^^;本業はメーカーの研究ですが, 物を作るのが好きなのでいつもプログラムを作って遊んでいるだけです^^

  • camputer
  • ベストアンサー率64% (22/34)
回答No.3

こんばんは,No.1です. 状況が把握できるかもしれないので,よかったらコピーの内容を 詳しく教えていただけないでしょうか. ・コピー元のセルとコピー先のセルの位置 ・どのようにコピーしているか? マクロか,関数か. ・どのようなエラーになるか? 何かメッセージが表示されるか,動かないときの状況など. ・できればbath1418さんの書かれたプログラムもコピペしてください.  位置関係を把握したいので.. 書けるだけで結構です.原因がつかめればいいのですが... >確かに「おおおぉ!」って感じですね。 ようこそプログラマの世界へ^^b

bath1418
質問者

お礼

こんにちわ。 実行時エラー’9’ インデックスが有効範囲にありません という表示です。セルの中身は=で他のセルとつなげているだけです。 ちなみに。。 前回教えていただいた、一定のセルの中身が変わったときに数字が増えていくようになるChangeのプログラムは、その一定のセルのアドレスをプログラムのどこに入れればよいですか。 camputerさんはプログラマーの方ですか?プログラマーってすごいですね!!

  • camputer
  • ベストアンサー率64% (22/34)
回答No.2

No.1です. ではまず簡単にコードのご説明を. Private Sub Workbook_Open()  Sheets("sheet1").Cells(1, 1) = Sheets("sheet1").Cells(1, 1) + 1 End Sub  1行目がこのコード(全3行)のタイトルで,3行目が「コードの実行終了」の命令です. 「どのタイミングでコードを勝手に動かせるか」というのを, 1行目のタイトルで決定できます.これの種類が色々あってたとえば  Private Sub Selection_Change() ←セレクトされているセルが変更さる度にコード実行  Private Sub Workbook_Close() ←ブック(このファイル自体)が閉じられる瞬間に実行  Private Sub Workbook_Open() ←ブックが開いた瞬間に実行  ・・・・などなど.好きなのを選びます. 今回は3つ目のタイトルにしておくことで,ファイルを開いた瞬間,その都度, 3行のコードが目に見えない早さで勝手に実行されます.  ちょっとややこしいのが2行目ですが,真ん中にある「=」の記号が, 「=より左にあるものの値を,=より右側のものと同じ値にする」です. (この3行の中で1番大事^^)  「=」の両方ともにある「Sheets("sheet1").Cells(1, 1) 」は, 「シート名「sheet1」のセル「A1」の値」のことです.    A1がCells(1, 1)   B1がCells(1, 2)  C1がCells(1, 3)    A2がCells(2, 1)   B2がCells(2, 2)  C2がCells(2, 3) を指します.  ここまでをまとめると,2行目の意味は,   「「sheet1のセルA1」を,「sheet1のセルA1」+1 に変更する」となります.  セルA1の値が,自分自身の値に1足したものに書き換えられるわけです.    よかったら下の2つのテストをやってみてください.1分ですぐできます.   (1) 「+1」を「+200」に書き換える.      セルA1の値が,1ずつではなく200ずつ増えていくと思います.   (2) 「Cells(1, 1)」を「Cells(1, 5)」に書き換える    (※2か所とも書き換える.左右のCellsの中身は同じものにしてください)      今度はセルE1の値が増えだすと思います.        どうでしょう??? >できました! >なにもわからないのですが・・・ についての回答はここまでですが, >A1以外のセルで同じことをするにはどうしたらよいのでしょうか。 については,上のテスト(2)でなんとなくお分かりになったかなー?と.  疑問点があればまた言ってください. ちなみに上のテスト(1)か(2)をやっているときに「へぇ」とか「おぉ!」とか ほんの少しでも感じたら,プログラマの素質ありです(^ ^)b

bath1418
質問者

お礼

なんとなくわかったようなわからないような・・・笑 でも書いてある通りにやったらできました! 確かに「おおおぉ!」って感じですね。 ですが・・・ 今その操作をしたいファイルの中で、あるセルに文字を入力したら、 他のシートのセルにもそれがコピーされるようにしてあります。 それをしているせいで、どうやら教えていただいた、数字が増える動作が うまく作動しなくなっているようなのですが・・これはどうすればよいのでしょうか。 何度もすみません。。

  • camputer
  • ベストアンサー率64% (22/34)
回答No.1

 こんにちは. ファイル名ではなくシートの中のどこかの数字が1づつ増える, ということでしたら,下記コードでいけると思います. Private Sub Workbook_Open() Sheets("sheet1").Cells(1, 1) = Sheets("sheet1").Cells(1, 1) + 1 End Sub 以下,コードコピペのやりかた.知ってたら読み飛ばしてください. エクセルファイルを開いてからAltキーを押しながらF11キーを押すと マクロコードを書くエディタが現れます. これの左上あたりの「ThisWorkbook(緑色のアイコン)」をダブルクリック. 右半分の白いスペースに上のコードをコピペ ファイルを保存して閉じる. 次開いたときからセルA1の数字が1ずつ増えると思います. ご参考になれば.

bath1418
質問者

お礼

回答ありがとうございました。 できました! なにもわからないのですが・・・ A1以外のセルで同じことをするにはどうしたらよいのでしょうか。

関連するQ&A