エクセルVBAでの質問です
投稿者 じょにー  (社会人)
投稿日時
2009/3/10 20:07:32
ここの掲示板の本来のVisual Basicの質問と、ちょっと、異なりますが、エクセルVBAでの質問をさせて下さい、セルの参照形式を「R1C1参照形式」にした時のセルの絶対指定の仕方が判りません、どなたか、ご存知の方が、おられましたら、是非、ご指導下さい、ここの掲示板の意に反する、質問であれば、申し訳ありませんでした
投稿者 るきお  (社会人)
投稿日時
2009/3/10 21:25:48
直接の回答ではありませんが、
Excelの場合、マクロの記録機能を使えばたいていのプログラムは書けるのではないでしょうか。
これは試されましたか?
Excelの場合、マクロの記録機能を使えばたいていのプログラムは書けるのではないでしょうか。
これは試されましたか?
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2009/3/10 21:35:58
> セルの参照形式を「R1C1参照形式」にした時の
A1方式での絶対指定/相対指定の方法を御存知なのであれば、セルにA1 方式の数式を入れてから
参照形式を切り替えれば、セルの表記もそれに応じて切り替わりますよ。
http://support.microsoft.com/kb/882969/ja
> セルの絶対指定の仕方が判りません
http://support.microsoft.com/kb/410595/ja
http://office.microsoft.com/assistance/hfws.aspx?AssetID=HP051983231041&CTT=3&Origin=HP051984251041&Client=1
A1方式での絶対指定/相対指定の方法を御存知なのであれば、セルにA1 方式の数式を入れてから
参照形式を切り替えれば、セルの表記もそれに応じて切り替わりますよ。
http://support.microsoft.com/kb/882969/ja
> セルの絶対指定の仕方が判りません
http://support.microsoft.com/kb/410595/ja
http://office.microsoft.com/assistance/hfws.aspx?AssetID=HP051983231041&CTT=3&Origin=HP051984251041&Client=1
投稿者 じょにー  (社会人)
投稿日時
2009/3/10 22:13:41
るきお様、魔界の仮面弁士様、せっかく、ご返答いただきましたが、よく判りませんでした、勉強不足で申し訳ありません、「R1C1参照形式」で、新しいマクロの記録をしましたが、やはり、range("A1:D1")と記録されてしまうので、縦方向の数値の集計のマクロは
Dim seru As String
Dim i As Integer
Dim kazu As Integer
Dim goukei As Integer
For i = 1 To 100
seru = "A" & i
kazu = Range(seru).Value
goukei = goukei + kazu
Next i
と書けばA列の1~100までのセルの値の合計は、計算出来ますが
横方向の集計の場合は、A、B、Cだと、For~Nextが使えないので、「R1C1参照形式」なら、出来ると、思っていましたが、やり方が、判らないので、他の方法を考えてみます、お手数を、おかけしました
Dim seru As String
Dim i As Integer
Dim kazu As Integer
Dim goukei As Integer
For i = 1 To 100
seru = "A" & i
kazu = Range(seru).Value
goukei = goukei + kazu
Next i
と書けばA列の1~100までのセルの値の合計は、計算出来ますが
横方向の集計の場合は、A、B、Cだと、For~Nextが使えないので、「R1C1参照形式」なら、出来ると、思っていましたが、やり方が、判らないので、他の方法を考えてみます、お手数を、おかけしました
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2009/3/10 22:48:18
> seru = "A" & CStr(i)
> kazu = Range(seru).Value
文字列で指定せずとも、
v = Cells(行番号, 列番号).Value
で取得できますよ。
また、VBA であることを活かし、ループで処理せずに Excel 自身に計算させる事もできます。
たとえば、A1:D100 にデータがあって、合計値を A101:D101 の行に記入したいなら、
Range("A101:D101").FormulaR1C1 = "=SUM(R1C:R[-1]C)"
と記述すれば OK です。
> kazu = Range(seru).Value
文字列で指定せずとも、
v = Cells(行番号, 列番号).Value
で取得できますよ。
また、VBA であることを活かし、ループで処理せずに Excel 自身に計算させる事もできます。
たとえば、A1:D100 にデータがあって、合計値を A101:D101 の行に記入したいなら、
Range("A101:D101").FormulaR1C1 = "=SUM(R1C:R[-1]C)"
と記述すれば OK です。
投稿者 じょにー  (社会人)
投稿日時
2009/3/10 23:37:42
魔界の仮面弁士様、出来ました、ありがとうございました
集計だけじゃ無く、書き込みに行く動作とかもやりたかったので、どうしても、VBAからのループ処理等から、行いたかったので、悩んでいましたが
Cells(行番号, 列番号).Valueで、出来る事が判りましたので、今後、色々、作って行くのに、大変参考になりました、ご丁寧なレスをありがとうございました
集計だけじゃ無く、書き込みに行く動作とかもやりたかったので、どうしても、VBAからのループ処理等から、行いたかったので、悩んでいましたが
Cells(行番号, 列番号).Valueで、出来る事が判りましたので、今後、色々、作って行くのに、大変参考になりました、ご丁寧なレスをありがとうございました