- ベストアンサー
エクセルVBAでできるでしょうか?
いつもお世話になります。 数列のAnと同じようなことがVBAで可能なのでしょうか? 例 A="A" n=3 An=5 msgbox A3 'これが5になるようにしたい。が ””になる これだとAnが一つの変数とみなされて、上手くいきません。 要はある値が変化するにごとに変数に入れていきたい(保存のようなもの)変数を1個目はA2個目はBということで結びつければできないこともないのですが、数列のようにAnと表現できればと思い質問させて頂きました。 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2です。お礼部分読ませていただきました。 そこで述べておられるやりたいことは、私の質問の捉えた内容とは随分違います。#1のご回答に対し、「上手くいきました」とお礼をかいておられるのですが、これで解決したわけではないですよね。 お礼で述べ(質問して)ておられることは、操作・保存した日と次ぎに使う日は「何日かたった後」ですから、コンピュターの電源を切ると思われます。従って変数の内容は消えるわけです。それで後日の利用のために、情報を残すには、通常ワークシートのセルの値として、残すわけです。ほかの機能の利用もありますが、そのためにエクセルを使うわけです。しかしそれをやりたくないなら、エクセルの画面に出ない、且つユーザーが記録できる部分はコメントやヘッダーやなんかしか思いつきません。またリンク先で情報を持つ手もお望みの趣旨には合わないでしょう。 結局テキストファイル等に(簡単だから)保存し、ブックをオープンしたときに自動的にそれをVBAで読みこみ、変数に割り当てておき、使いたいとき、その変数を使う方法があります。終わる時は、そのテキストファイルに終了時の状態の情報を書き出します。 情報の引継ぎ手段として常套手段かと思います。しかしプログラムを読める人なら、簡単にそのテキストファイル名を探せます。 そう言うことで良ければ、そういうVBAコードを考えますが。 ●エクセルのシートごとに(見るのに)passをかけれるんでしょうか http://www.asahi-net.or.jp/~ZN3Y-NGI/YNxv927.html など参照。エクセル シート パスワードでWEB検索を お勧め。 これは別内容の質問で、過去にも同様の質問も在ると思うし、質問すれば回答は直ぐ入ります。 1つの質問に別の質問を含めるとか、さらに思いついた疑問を増やしては、回答者が得られないか減る(表題だけ見て、初めの方だけ見て回答するかどうか判断する忙しい人が多いのでは)ように思いますので、別質問をしてはどうですか。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
よりエクセルVBAにさや寄せして説明すれば、 ワークシートのA列がAに添え字付きiのようなものです。 A(i)と言ったら良いのか。 y=Cells(i,"A")と表現し、これが実行される前のステップでiを決めれば良いのです。iは取りあえず1以上の正の 整数値に限り、65000程度以下の限定があります。 A3の値を参照するなら、iは3です。設定も当然来ます。 Cells(i,"A")=n^2+nなどです。nはその前に値を代入しておかねばなりません。 またCells(i)と言う表現も可能で、1列から256列まで がA1,B1、・・・を示し、Cells(257)がA2セルを表します。これだとiは256x65000以上くらい広がります。 しかし実際はエクセルは平面2次元的表であることが売り の点であるので、2次元配列Cells(i,j)でiは行、jは列を 指定して、考えます。 A="A" はjに"A"をセットし、iに3をセットすれば A3セルの値5を参照できます。また5をセットできます。エクセルVBAの一番基礎の、セル(実はRange)オブジェクトの捉え方の代表的方法です。 実はご質問の意図がはっきり伝わらないのですが、上記のようなことを聞いておられるかあるいはエクセル関数にINDIRECTやINDEXと言うのがありますが、これの機能に近いことを探されているのかも知れないとも思いました。
お礼
imogasiさん回答有難うございます。 いつもお世話になります。 セルの表し方が色々あるんですね、参考にします。 >実はご質問の意図がはっきり伝わらないのですが そうなんです。勘違いしてました。(というかよく分からなかった。) 実はやりたい事は別でして・・・エクセルシートには数字がないのに、VBAに保存したい。みたいな・・・よう分からんなあ~。え~例えばですね エクセル A1 1/1 日付が入っている(日々替わる) A2 100 数字が入っている(日々替わる) これを毎日VBAで変数に保存しておく。1/1はA(1)=100 1/2はA(2)=200というかんじで・・・で、何日かたった後A(1)を呼び出したら100って出てくるようにしたいんですが・・・できますでしょうかこんなこと。エクセルの別シートで日々付足していけばいいんでしょうが、できればエクセル上には出したくないんです。代替案なんですけど、エクセルのシートごとに(見るのに)passをかけれるんでしょうか。 最初の質問と全然違ってきますが、宜しくお願いします。 m(__)m
- popesyu
- ベストアンサー率36% (1782/4883)
別にVBA特有のものではなく、そういった変数の取り扱いは配列変数というものを用います 例えば DIM hoge(10) と宣言することで hoge(0)~hoge(10)までの変数が用意されます。 i=1 hoge(i)=i+3 とでもやっておいてループさせておけば数列の変数の作成も容易でしょう。
お礼
回答有難うございます。 上手くいきました。(^^)/
お礼
再度の回答有難うございます。 >「上手くいきました」 は、単に技術的に上手くできたということです。もちろんこれはこれで使わせて頂きます。(^0^) >そう言うことで良ければ、そういうVBAコードを考えますが。 全くもって、そういうことです。大変じゃなければお願いできますか・・・m(__)m >これは別内容の質問で、・・・・ これはimogasiさん個人にご質問させて頂いたということで、ご理解頂きたいと思います。 また、重ねて言わせて頂ければ、imogasiさんに私のやりたいことを、より良く伝えたかったということで、今回は(も?)質問形式になってしまったということです。