https://oshiete.goo.ne.jp/qa/9799279.html

「vba座標の続きです。」の質問画像

質問者からの補足コメント

  • いつもお世話になり、ありがとうございます。
    今日もよろしくお願いいたします。

    ブレークポイントセットして、
    「請求書シート」のc16に番号を入力、
    「デバック」ツール→ステップインorカーソル行の前まで実行
    してましたが、弾く電子音がします。

    操作がおかしいのでしょうか?

    「vba座標の続きです。」の補足画像1
      補足日時:2017/06/19 16:24
  • trueにして、もう一度実行したら、転記されます。
    そのかわり、モジュール画面が以下の通りになります。
    画像を添付します。

    「vba座標の続きです。」の補足画像2
    No.5の回答に寄せられた補足コメントです。 補足日時:2017/06/19 18:58
  • ? Application.EnableEvents
    True

    ? target.Address
    $C$16

    ? Set fd
    コンパイルエラー 修正候補 式

    ? Worksheets("請求書").Range(rg).Value
    実行時エラー 1004

    と表示されました。

    「vba座標の続きです。」の補足画像3
    No.4の回答に寄せられた補足コメントです。 補足日時:2017/06/19 19:13

A 回答 (21件中1~10件)

それから、前のスレッドの最後で放置した


管理表にもこのコードを貼って$C$16を
$N$2に変更すればそのまま使えるだろうという積りです。
問題あれば言ってください。

またエラーが取れたらブレークポイントは必要ありません。
エラーを見つけるまでは、解除しても見つかる理由に
ならないから。
    • good
    • 0
この回答へのお礼

分かりました。
ありがとうございました。

まずは、変数とrangeについて…と、今日完成したモジュールのコードの意味の理解を深めてから、チャレンジしてみたいと思います。

明日、また報告させてください。
私も早く変数を使えるようになりたいです。

今日は何度も同じことにお付き合いさせてしまって、疲れさせてしまって、ごめんなさい。
今日も一日、お付き合いいただいて、ありがとうございました。
どうかゆっくり休んでください。
お疲れさまでした。

お礼日時:2017/06/20 00:42

今日は、ほぼいいね!



若干の補足をすると、変数には型ってものがあるという点が重要。
例えば引数の
ByVal Target As Range
as の後ろが型でこの場合はRange型でオブジェクトだけど
通常の変数としては int , double , long , string他
目的によって使い分ける。
何も指定しないと Variantって特別な何でも入る箱になるけど
通常は、型を意識することが大事だよ。
(ちなみにスペース入ってたけどByValだからね、
Byrefが対語になる。これはまたそのうち必要になるときに備えて
使い分けについて、調べとくのもいいと思う)


それで、今日、伝えたいのはオブジェクトだ。
オブジェクトってEXCEL自身も含めてEXCELで取り扱える
全てがそうと思ってもらってもいい位。

EXCELではブックをいくつも読めるし
そのブックにはシートがあって、そのシートにはセルがある。
勿論そのそれぞれに色んな関連するものがあるね。

例えばセルだけ見てもセルの書式で設定可能な
表示形式や、フォント、罫線他様々な要素がある。

オブジェクト1.オブジェクト2.オブジェクト3
みたいな感じで、どんどんつないでいけるのも
イメージとして覚えておくとソースが読みやすくなると思う。

VBE(コードを編集できる画面)の表示メニューに
オブジェクトブラウザってのがあるんだ。

実は僕ここをよく見ます。
オブジェクトって種類が目茶目茶多いうえに
プロパティやメソッドもしこたまあるので
度忘れしちゃうし、そもそも使えそうなのがないか
探すのにとか、週に何度かは見てるかも。

今日はこんなとこかな。

最後にLINEしてる?
もしEXCELでなんかあったら、
こことは数字の3が付くだけの違いなので
ID検索してくれたらいいです。
    • good
    • 0

うーむ。

取り敢えずはOKそうだね。

ではちょっと答えを振り返ろう。
①「c16」に数を入力すると、イベント処理を開始する。
一見間違いでもなさそうだけど、だいぶ違う。
イベント禁止を解除するが正解。
Application.EnableEvents=False
でイベント発生を禁止したので
それを解除するということ。

②黄色になった行でエラーになって停止する。

結果としてはそうだけど。

一度説明したけど、まず黄色の行があるという事は
そのプログラムが実行途中であって、今から黄色の
行に取り掛かるところってこと。

それが重要で実行中でないと、変数の値とか
そもそも実行前には、入っていないから
?なんちゃらって色々確かめてもらったけど
この黄色の行がない時は、値は無いことを覚えておいて。

エラーで止まった時も、その行が実行できないで
止まるけど、それは単なるいきさつで、黄色は今から
そこを実行するところって事。



>因みに両方Rangeって事は分かりますか?
なぜ.addressをつけるかはわかるでしょうか?

ごめんなさい(>_<)両方わかりません

諦めがいいなぁ。
コードの前の方に
Dim rg As Range, fd As Range
って行があるよね。

rg と fd という変数を使いますと宣言しています。
その各々がRange型だと。

とはいっても、何の話?って感じかな。

じゃあ変数とRange型についてググって調べて
理解できたことを明日教えてください。
    • good
    • 0
この回答へのお礼

丁寧な解説ありがとうございました。

>変数とRange型についてググって調べて
はい。明日までにちゃんと答えられるように勉強します。

今から今日の教わったことを1枚にまとめて、理解を深めたいと思います。

今日も一日私の勉強にお付き合いいただいて、言葉では言い表せないくらい、とても感謝しています。
ありがとうございました。

お疲れさまでした。

お礼日時:2017/06/20 00:21

No17の対処で変わるはずだから


状況教えてください。
    • good
    • 0
この回答へのお礼

座標シート10行目削除しました。
転記出来ました。ほかの数字入れてもできました!

お礼日時:2017/06/19 23:26

rgが$B$10?


これじゃん。
座標シートの10行目削除してください。
見た目になくてもスペースか何か、10行目の
どっかにあるので、こけてます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
私一人ではとても出来ませんでした。今は感激して興奮しています。
諦めなくって良かったです。
何度もお付き合いいただいて、お時間を割いていただいて、感謝しています。

ステップ実行とかエミディエイト…
丁寧に教えていただいて、学習の機会を与えてくださったことに、深く感謝申し上げます。
このサンプルは大切に保管させていただく所存です。

座標のシートですが、これからゆっくり理解を深めていこうと思います。
ありがとうございました。

恐縮ですが…
管理表シートn2に数字を入れたら請求書に反映させる(反対バージョン)はどこを変えたらよいのか教えていただけますか?

お礼日時:2017/06/20 00:04

①Application.EnableEvents=trueの意味を答えて。



②黄色の表示になっている行は、何を示すために黄色に
なっている?
    • good
    • 0
この回答へのお礼

多分ですが…(/o\)
①「c16」に数を入力すると、イベント処理を開始する。
②黄色になった行でエラーになって停止する。

と思うのですが・・・

お礼日時:2017/06/19 23:11

>転記は1回はするんですが、2回目は転記されず、1回目のデータのままです。


>…そのあとすぐに
>? Application.EnableEvents
>にすると、
>False
>になります。
恐ろしく人の話聞かないね。
毎回先に
Application.EnableEvents=true
が必要っていってるでしょ?
プログラム中で戻すように書いてるけど
途中で止まるうちは、どうしようもないの。

それに答えてほしいことが書かれてない。
〇ブレークポイントはどうなってるの?

〇転記は1回はするって何個したか、訊いてるよね。
話が進むようにしてください。
座標シートの行数だけ転記するはず何個か言って。


>そして、 Worksheets("請求書").Range(rg).Value = Worksheets("管理表").Range(r>g.Offset(0, 1).Text & fd.Row).Value
>の部分が黄色に変わります。

同じ話するの好きやなぁ。認知症手前?

何も表示されることなくそこで止まるわけないじゃん?
表示されるメッセージをいわないと、
だからきいてるよね。

〇rgとfdはどないなったん?
    • good
    • 0

そうそう


Application.EnableEvents=trueは
入れなおす必要はないです。消さなければ最後のeの後ろに
カーソルを当ててEnterを押せば有効です。
    • good
    • 0
この回答へのお礼

こんばんは。
いつもお世話になります。
今日もご指導お願いいたします。

返答を書き込む場所が違うのですが…
①変数とは…文字列や、値を入れておく箱です。
(文字列や数値、オブジェクトのプロパティの値などを入れることが出来る。)

②rangeとは…
セルまたはセルの範囲。

自分なりの解釈ですが、これで合っていますか?

private sub workssheet_change
(by val target as range)とは…
このコードを記述されているシートのどこかのセルの内容を変更した時点で、この下に記述されているコードが実行されます。
「worksheetクラスのchangeイベント」。
イベントというのは、何かを操作した時点で自動的に実行される。)

Dim rg range,fd as range
rgとfdは任意でつけた名前で、
>rgとfdいう変数を使いますと宣言しています。

セルの範囲または位置を扱う変数を使いますって事でしょうか?

お礼日時:2017/06/20 21:43

今戻りました。


携帯からだったので誤字多くてごめんなさい。
前のスレッドのNo2に説明したようにrgは座標シートの
A1:A9を順に辿る予定なのでエラーが起きる時
それがどこを指しているか、見てほしいってこと。

fdの方はFindつまり検索して(管理表のA列を)見つけた
セルを指している、このどちらかに問題があるのではと
僕は考えました。
    • good
    • 0
この回答へのお礼

すみません。さっきの最後のは足りませんでした。
>fdの方はFindつまり検索して(管理表のA列を)見つけた
セルを指している

>rgは座標シートの
A1:A9を順に辿る予定

二つの変数宣言されていたんでした。

お礼日時:2017/06/20 21:57

転機は幾つされるんですか?


座標のしーとは現在の座標に合致してますか?
    • good
    • 0
この回答へのお礼

返信遅れてすみません。

転記は1回はするんですが、2回目は転記されず、1回目のデータのままです。
…そのあとすぐに
? Application.EnableEvents
にすると、
False
になります。

Application.EnableEvents=true
にして、再開すると転記されます。
そして、 Worksheets("請求書").Range(rg).Value = Worksheets("管理表").Range(rg.Offset(0, 1).Text & fd.Row).Value
の部分が黄色に変わります。

その繰り返しです。

お礼日時:2017/06/19 22:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング