• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA 下記ソースについて質問です。)

VBAでのワークシートセレクトと繰り返し処理、空白の処理についての質問

このQ&Aのポイント
  • VBAでワークシートを選択する方法や繰り返し処理の改善方法について質問しています。
  • また、空白の場合の処理についても質問しています。
  • さらに、特定の条件時に行の削除とシフト処理を行う方法について質問しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.3

自分が納得いかない回答に反論するのは、私には好印象です。 (サイト的にはトラブルを極力回避して社交辞令で済ます方を 好対応と評価するのでしょうが) で、補足を踏まえた上でこちらから更に言わせてもらえば、 > With~End Withもアドバイス通り全て「.」をつけて試しましたが、 > うまく処理されなかった とか > GoToを書いて試しましたが動きませんでした。 って基本文法ですよね。動く動かないの世界の話ではありませんよ。 日本語で「主語の後に述語を書く」とかいうレベルのルールです。 ルールを守って書けば動くし、動くように書くルールを覚えるわけです。 その段階で疑問が残ってるのに、「それぞれのコードの意味を理解」 しているとは言えませんよ。 プログラムは、確実に動く基本文法を1つ1つ積み上げていく作業です。 本来なら、そこに疑問など沸かないのです。技術的に特殊な知識を 必要とする、経験やテクニック・裏技を知らないとできない部分も ありますが、基本文法レベルでそれは無いです。 結局、土台となる基本の知識が不安定の状態で、自分勝手な解釈を するしかなく、動くサンプルコード1セットを中心にしか考え られていないのでは? With~End With に絞って突き詰めた質問をなぜしないのですか? GoTo に絞って突き詰めた質問をなぜしないのですか? > 応用、実践でつまずいてるので質問しています。 基本でつまずいてますよね?

msnok
質問者

補足

基本が出来ていなくて、 書き方が悪かったので処理できなかったと理解しました。もう一度見直してみます。 ありがとうございました。

その他の回答 (2)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

>★1 >★2  ⇒マクロ記録ならいざ知らずVBAではオブジェクトを記載しましょう。   回答等を丸映ししているから応用が利かない。もう少しそれぞれのコードの意味を   理解しましょう。   余談ですがコード中のコメントはコードを説明するのではなく処理内容を記載しましょう。  一例です。   With~End Withで統一しては如何でしょうか。   Worksheets("レポート元")のオブジェクトを使用している箇所は全て「.」に   忘れずに変更して下さい With Worksheets("レポート元") For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row If .Cells(i, "Q").Value <> "" Then annaicode = .Cells(i, "Q").Value End If ⇒ ★2後述のNext iの直前に移動  ~ End If Next i End With >☆  ⇒ ご質問内容がよく判りませんので改めて質問しては如何でしょうか。

msnok
質問者

補足

お返事ありがとうございます。 アドバイスいただいているので、このような返事をしたくはなかったのですが、すみませんが、伝えさせていただきます。 >回答等を丸映ししているから応用が利かない。もう少しそれぞれのコードの意味を理解しましょう。 回答いただいた部分は、どういう処理なのかや意味かが書かれていないので、調べてからそれを使っております。 それから、田中亨さんのVBAエキスパート「ベーシック」「ベーシック」公式テキストを読んでいるので少しは解るのですが、応用、実践でつまずいてるので質問しています。 With~End Withもアドバイス通り全て「.」をつけて試しましたが、うまく処理されなかったので、 With~End Withの中にWith~End Withを入れての処理は良くないのかと思いました。 後ほど試してみます。 >End If ⇒ ★2後述のNext iの直前に移動 すみません、理解出来ませんでした。 GoToを使用しても良いということですか? >☆  ⇒ ご質問内容がよく判りませんので改めて質問しては如何でしょうか。 ★の問題が解決したら書いてみます。

回答No.1

>ワークシートをセレクトしていますが、このやり方でよいのでしょうか?良い方法がありましたら教えてください アクティブのオブジェクトに対して、処理する関数、メソッド、プロパティ、など明示的に、オブジェクトを指定しなくても良い。 と言う、決まりごとなので、そのような関数などを使う場合は、それでいいということです。それ以外は、フルパスで指定すればいいだけのこと(オブジェクト.メソッド or プロパティ | Get(Object)関連の関数を使う)。 相対指定(パス)、絶対指定(パス)なんて言う概念と一緒です。 後の答えは、実際に動作するコードを記載してください。解析するの面倒です。

msnok
質問者

補足

お返事ありがとうございます。 >と言う、決まりごとなので、そのような関数などを使う場合は、それでいいということです。 書き方はこれで良いという事ですね。解りました。 VBAの勉強を始めたばかりなので、他の2点については、手順や書き方を確認したくて質問上げてみました。  特にGoToについては、ネットで調べたところエラーの時に使うのは解りますが、それ以外で使用するのはよくなさそうな事も書いてあったので……でも、一度ネットで見た時と同じようにGoToを書いて試しましたが動きませんでした。 質問が悪いようですみませんでした。

関連するQ&A