Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11356 / 13646 ツリー ←次へ | 前へ→

【16547】エクセルマクロについて active offset(0,0) ちょこ★ 04/8/2(月) 12:43 質問[未読]
【16548】Re:エクセルマクロについて active offse... Jaka 04/8/2(月) 13:22 回答[未読]
【16549】よくわからなくてすいません。 ちょこ★ 04/8/2(月) 13:54 質問[未読]
【16550】Re:よくわからなくてすいません。 つん 04/8/2(月) 14:15 発言[未読]
【16553】何度もすいません。つんさん有難うございま... ちょこ★ 04/8/2(月) 16:04 質問[未読]
【16555】Re:何度もすいません。つんさん有難うござ... つん 04/8/2(月) 16:33 発言[未読]
【16556】まだ良くわからなくて・・・・ ちょこ★ 04/8/2(月) 16:45 質問[未読]

【16547】エクセルマクロについて active offset...
質問  ちょこ★  - 04/8/2(月) 12:43 -

引用なし
パスワード
   はじめましてこんにちは。
仕事で少しマクロを組んでみようとやってみたのですが、最初に作ってみたときと、次に作ってみたときと設定?というか変わってしまって困っています。
どなたかアドバイス宜しくお願いします。

最初にマクロの記録ボタンで作ったとき

ActiveCell.FormulaR1C1="SUM(R[-6]C[-5:RC[-5]])"
ActiveCell.Offset(0,0),Range("B1").Select
End Sub


次に同じように作ってみたとき(変わってしまった)

ActiveCell.FormulaR1C1="SUM(R[-6]C[-5:RC[-5]])"
Range("L1714").Select

2行目の部分です。絶対値になってしまってどうすればもとに戻るでしょうか?

次分で入力して直すというようにすれば良いと会社の人に言われたんですが、自分は全くの初心者でできるだけ記録ボタンで出来ればとおもっています。

どなたか宜しくお願いします。

【16548】Re:エクセルマクロについて active off...
回答  Jaka  - 04/8/2(月) 13:22 -

引用なし
パスワード
   こんにちは。

>最初にマクロの記録ボタンで作ったとき
>ActiveCell.FormulaR1C1="SUM(R[-6]C[-5:RC[-5]])"
>ActiveCell.Offset(0,0),Range("B1").Select
>End Sub

マクロの記録で、作ってから修正したものですね。
"="を追加してもエラーになって動きません。

動いたとしてもどこに書き込んでいるのか、これでは解りません。

マクロ記録した関数はR1C1形式になってしまいますので、セルに書き込んだ関数をこんな感じにして書き込んだらどうでしょうか?

Range("A1").Formula = "=Sum(B1:B15)"

【16549】よくわからなくてすいません。
質問  ちょこ★  - 04/8/2(月) 13:54 -

引用なし
パスワード
   ご回答有難うございます。
今一、自分でもよくわかってないので、修正で直したりはしてないんですがどうして、このようになったのか良く分かりません。

>ActiveCell.FormulaR1C1="SUM(R[-6]C[-5:RC[-5]])"←ここの]が一つ多かったみたいです。
>ActiveCell.Offset(0,0),Range("B1").Select
>End Sub

ちなみに、ほんとに初心者なので、どの様に直して質問したら良いかもちょっとわかっていません。下記の表示で対応して頂ければと思います。
またお返事頂けるようでしたらお願い致します。

【16550】Re:よくわからなくてすいません。
発言  つん E-MAIL  - 04/8/2(月) 14:15 -

引用なし
パスワード
   ちょこ★ さん、こんにちは。
Jakaさんヨコから失礼します(ご機嫌いかが?)

>ご回答有難うございます。
>今一、自分でもよくわかってないので、修正で直したりはしてないんですがどうして、このようになったのか良く分かりません。

ちょこ★さんは、実際にどういう処理をして、マクロを記録したのでしょうか?
記録したあとは、少しもいじってませんか?

マクロの記録で、SUM関数を挿入すると、

ActiveCell.FormulaR1C1 = "=SUM(R[-10]C:R[-1]C)"

という形になります。
ちょこ★さんのコードと比べて、"="が足りませんよね?

>ActiveCell.Offset(0,0),Range("B1").Select

の形もどうやったら、こういうコードが生成されたのか、ちょっと謎です。
いろいろやってみたのですが、出来ませんでした。
この形を希望されるんでしょうか?
どういう意図で、この形がいいのやろか?
普通に、記録すると、

Range("C1").Select

になると思うんですが・・・
ちなみに、上記(Offsetの)のもそのままコピペするとエラーになります。
なので、マクロの記録で出来たコードそのものではないと思うんですが・・・

もう少し、「何をしたい」「実際に使うシートの構成」等を書いてくれたら、よい回答がつくかと思います。

それから、「記録だけでやりたい」みたいに書かれてましたが、
マクロの記録は、「最初のとっかかり」程度のものかなあ?と私などは思います。
記録で出来たコードは、無駄もありすぎますし、応用も利きません。
実際にそれだけで、実務に耐えられるような物を作るのは難しいんちゃうかな?と思います。
最初は大変だと思いますが、記録で出来たコードを元に修正して実用的なコードにしていけるようにしたほうがベターかなあ、と思います。
・・ちと、えらそう?(^^;

【16553】何度もすいません。つんさん有難うござい...
質問  ちょこ★  - 04/8/2(月) 16:04 -

引用なし
パスワード
   つんさん、回答有難うございます。
すいません、知識が無いのに、マクロに手をだしてしまってます・・・(××;

一応、もう一度そのコードを表示してコピーしてきました。


Sub 七行()
'
' 七行 Macro
' マクロ記録日 : 2004/7/9 ユーザー名 : ×××株式会社
'

'
  ActiveCell.FormulaR1C1 = "=SUM(R[-6]C[-5]:RC[-5])"
  ActiveCell.Offset(-6, -11).Range("A1").Select
End Sub
Sub 八行()
'
' 八行 Macro
' マクロ記録日 : 2004/7/9 ユーザー名 : ×××株式会社
'

'
  ActiveCell.FormulaR1C1 = "=SUM(R[-7]C[-5]:RC[-5])"
  ActiveCell.Offset(-7, -11).Range("A1").Select
End Sub


>ちょこ★さんは、実際にどういう処理をして、マクロを記録したのでしょうか?

集計をするのに、ボタンですぐ合計を出せるようにしたいとおもって、作りました。

>記録したあとは、少しもいじってませんか?

最後に行くセルを直したんですが、設定をあれやこれやとのぞいてたときにもしかしたらいじってしまったかもしれません(;_;)後悔・・・。


>マクロの記録で、SUM関数を挿入すると、
>ActiveCell.FormulaR1C1 = "=SUM(R[-10]C:R[-1]C)"
>という形になります。
>ちょこ★さんのコードと比べて、"="が足りませんよね?

足りないのかさえもわかってない私・・・・(??;すいません

>普通に、記録すると、
>
>Range("C1").Select

そうなんです!!!!そうなったんです。だから
ActiveCell.Offset(-7, -11).Range("A1").Select になるようにするにはどうすれば元どうりになるかって考えてたんです!


>なので、マクロの記録で出来たコードそのものではないと思うんですが・・・

会社の人にもその様に言われたんですが
ActiveCell.Offset(-7, -11).Range("A1").Select
のようなコード単語を私は知らないので,修正して作れるような知識が無いんです。


>最初は大変だと思いますが、記録で出来たコードを元に修正して実用的なコードにしていけるようにしたほうがベターかなあ、と思います。
>・・ちと、えらそう?(^^;

実用的なコードをもっと勉強してからてを出した方がいいですよね・・・・。
えらそうだなんて、とんでもないです。初心者に丁寧にお返事下さり感謝しています。m(__)m
また回答下さればありがたいです(;▽;)宜しくお願いします.

【16555】Re:何度もすいません。つんさん有難うご...
発言  つん E-MAIL  - 04/8/2(月) 16:33 -

引用なし
パスワード
   どもども

>最後に行くセルを直したんですが、設定をあれやこれやとのぞいてたときにもしかしたらいじってしまったかもしれません(;_;)後悔・・・。

そうみたいですね(^^;
「=」が抜けてたり、「.」が「,」になってたりしてますもんね。

>>ActiveCell.FormulaR1C1 = "=SUM(R[-10]C:R[-1]C)"
>>という形になります。
>>ちょこ★さんのコードと比べて、"="が足りませんよね?
ちょこ★さんのコードは、
ActiveCell.FormulaR1C1 = "SUM(R[-10]C:R[-1]C)"
になってたよ。SUMの前の「=」が抜けてるにゃ。

>ActiveCell.Offset(-7, -11).Range("A1").Select になるようにするにはどうすれば元どうりになるかって考えてたんです!

うーん、このコードがよくわかりません。
結局何を意図としたコードなんでしょう?

これを、実行すると、アクティブなセルを基点に、まず、行を−7,
列を−11した位置に行って(実際には動いてないよ)
そこから、「A1」つまり行1,列1分移動したセルをセレクトって感じかな?
(でも、この場合はそのセルも数えて・・・みたいだ・・よくわかんないや(^^;)
普通は、こんな書き方しません。

ActiveCell.Offset(x, y).Select で、移動させます。

ちなみに、ActiveCellってのは、今現在カーソルがあるセルで(わかってるか)
Offsetってのは、この場合ActiveCellを基点に、行方向にx分、
列方向にy分移動した位置を示すってことです(言葉が適切かどうかは不安)
たとえば、

ActiveCell.Offset(1, 1).Select

だとと、ActiveCellが「A1」だとすると、「B2」をセレクトってことです。

>実用的なコードをもっと勉強してからてを出した方がいいですよね・・・・。
うーん、有る程度基本からやってかないとしんどいかもしれませんねー
急に実務でやれって言われるとキツイかも・・・
でも、仕事やったらしゃあないのかな?
頑張って、一つ一つのコードを丁寧に理解していくようにしてください。
わからんままで、出来たからいいやーだと、後々かえって大変よん。

【16556】まだ良くわからなくて・・・・
質問  ちょこ★  - 04/8/2(月) 16:45 -

引用なし
パスワード
   つんさんお忙しいのにすいません。回答有難うございます。

>>ActiveCell.Offset(-7, -11).Range("A1").Select になるようにするにはどうすれば元どうりになるかって考えてたんです!
>
>うーん、このコードがよくわかりません。
>結局何を意図としたコードなんでしょう?


ActiveCell.Offset(0, 0).Range("A1").Select
0でもなんでも良いんです。(x.y)←これも最近知りました(笑)が、絶対値じゃなくて
ActiveCell.Offset(0, 0).Range("A1").Select←こんな形にいつも自動でそうなればと思ったんです。
でもどうしてこういうコードが張り付いたんでしょうか・・・。

よくわかってないものからの質問で本当にすいません。
ActiveCell.Offset(0, 0).Range("A1").Select これがどうして張り付いたのか知りたくて知りたくて知りたくて(;_;)すいませんー。

11356 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free