• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:列、行番号などをDebug.Printするには?.)

Excel VBAでDebug.Printしてセルの情報を取得する方法

keithinの回答

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

○何をしたいのか →何かを「選択した」ときに、その選択した(された)モノの情報を調べたい ⇒どうしたら良いのか (方法1:セル範囲等) 選択されたモノに紐づいている「イベントプロシジャ」(自動起動マクロ)が存在している場合は、それを使って「選択されたモノ」それ自体を取得、情報を取り出す (方法2:たとえば図形等) 選択されたモノにイベントが紐づいていない場合、手動マクロを起動し、「今選択されているモノ」の情報を取り出す ○方法1の具体的な展開の基本 例えばセル範囲の場合: 選択される可能性のあるセル範囲としては、次の状況が考えられます  一個のセルを選択した場合  ヒトカタマリの(矩形の)セル範囲  とびとびのセル範囲  列を1列あるいは複数列(カタマリ・とびとび)  行を1行あるいは複数行(カタマリ・とびとび) これらのケースは、いずれもWorksheet_SelectionChange(あるいはWorkbook_SheetSelectionChange)イベントによって取得できます。具体的に何を選択した時、イベントが何を取得しているのかケースごとに調べたり、あるいは具体的なマクロでどう処理を進めるのか漏れなく考えなければいけません。 手順: シート名タブを右クリック、コードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_SelectionChange(byval Target as excel.range) msgbox target.address end sub 上述したようなさまざまな「セルの選び方」に応じて、具体的に何が(どのようなタイミングで)targetに取得されたか、(回答をフンフン読んで分かった気になるんじゃなくて)実際にあなたの手を動かして確認してください。 ○ご質問の具体的な回答 練習用のイベントプロシジャを消去、改めて下記をコピー貼り付ける private sub Worksheet_SelectionChange(byval Target as excel.range) debug.print target.address, debug.print target.areas.count, debug.print target.row, debug.print target.rows.count, debug.print target.column, debug.print target.columns.count end sub

maamaa
質問者

お礼

ありがとうございます いつもマクロそのものを教えてもらっていては進歩しないので Debug.printで得られる値を見ながらIF文を書いてみようと思い 質問しました 確かに、必要なときに教えてもらったマクロを少し手直しするという 私のやり方では進歩しません 反省しています

maamaa
質問者

補足

早速やってみました 目的の値がすべて取得出きています 貴重な時間に、長文で教えていただいて恐縮です 親切に教えていただきありがとうございました

関連するQ&A

  • SelectionChangeイベント 文字列エラ

    エクセルvbaなのですが セルをクリックしたときに、該当する値ならメッセージを表示させる際に Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Value = 1Then MsgBox "" End If End Sub ならエラーにならずに動くのに Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Value = "運賃" Then MsgBox "" End If End Sub のように文字列にすると、型が一致しません。 と言うエラーになります。 If Target.Value = "運賃" Then の時でも、空白セルや数値が入ったセルをクリックした際はエラーになりません。 どのような型にすればいいのでしょうか? 実際、「運賃」と言う値が入ってるセルをクリックしても同じエラーが発生します。

  • あるセルの値を別のセルを参照する際の行番号や列番号として使用したい

    あるセルに入っている値を別のセルを参照する際の行番号や列番号として使用したいのですが、可能でしょうか? たとえば、A1に10、A2に20と入っていたら、10行目の20列目の値を取得するようなことがしたいです。 マクロを使えばできそうですが、マクロを使わずにできる方法があれば教えてください。

  • VBA 指定値に最も近い値のセルの行番号は?

    A列に数値が昇順で並んでます。指定の値に最も近い値が並んでるセルの行番号を知りたいのです。 WorksheetFunction.vlookupを使うと、値は分っても行番号はわからない筈です。 Cells.Find().Row を使うと、行番号はわかりますが「最も近い」値はわからない筈です。 マクロを組め!との御指摘があるかも知れませんが、便利な関数があるのならそれで済ませたいです。何かありませんか?無ければ諦めます。

  • 行番号と列番号が見えない?

    列番号や行番号の上をクリック(または 全セル選択)して列や行を選択すると「A,B,C・・・」「1,2,3」といった文字や数字が真っ白で見えなくなります。 特に不都合はないのですが、できれば元通りに反転した状態に戻したいのですが・・・。 よろしくお願いしま~す!

  • AccessのDebug.Printで…

    以下のようなことをしています。 condValue = "(Val(Mid(T_テーブル.値,9)) between " & Val(Me!Value_1) & " and " & Val(Me!Value_2) & ")" Debug.Print condValue (テーブルの「値」はテキスト形式) これで、イミディエイトウィンドウに表示されると、 (Val(Mid(T_テーブル.値,9)) between 1 and 9) のような感じです。 Me!Value_1とMe!Value_2のところは、ちゃんと数値に置き換わっているのに、テーブルのところがかわってませんよね。 やっぱりテーブルは値がたくさんあって、ひとつひとつ当てはめていくわけにいかないからこのような表記になるのでしょうか? ちょっと不安になってしまったもので。。。 また上記のcondValueの書き方はあっているでしょうか?

  • 列番号をクリックすると、列番号が凹んで真っ白になる

    Excel2000を使っています。 列番号や行番号をクリックすると、列番号が凹んだ状態になり、真っ白になります。中のセルはいつもどおりですが、列番号だけ、凹んで真っ白な状態です。 A列の列番号をクリックすると、Aという文字は消えて、列番号が凹んで真っ白です。 何か設定でも有るのでしょうか?

  • 他のシートの任意の列に1行おきに表示する

    よろしくお願いします。 下の構文ですと Worksheets("入力")の3列目5行目以降のデーターが Sheet2の同じ列(3列目)5行目以降に1行おきに表示されます。 これを Worksheets("入力")の3列目5行目以降のデーターを Sheet2の7列目5行目以降に1行おきに表示したいのですが どのように書き直せばよいでしょうか。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim i As Long, j As Long j = 5 With Worksheets("入力") For i = 5 To .Cells(Rows.Count, 3).End(xlUp).Row .Rows(i).Copy Worksheets("Sheet2").Cells(j, 1) j = j + 2 Next i End With End Sub

  • Debug.Writeで困っています(VB2008)

    お世話になります。 VB2008ExpressEditionの勉強を始めました。 本を読みながら進めているのですが、 Debug.Write "テスト" でイミディエイトウインドウに"テスト"と表示されるはずですが なにも表示されません。実際のテストコードは以下です。 Private Sub BUTTON1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BUTTON1.Click  Debug.Write("テストWrite")  Debug.Write("")  Debug.Print("Printテスト")  MessageBox.Show("テスト") End Sub メッセージボックスは表示されますが、イミディウィトウインドウにはなにも表示されません。何か特別な設定が必要なのでしょうか? OSはVista HomePremium(64bit)です。 初歩的な質問で恥ずかしいのですがよろしくお願いいたします。

  • awkで項目番号ごとに行を列に並べる

    [入力ファイル] a  10   1 b  10   2 c  10   3 d  10   4 a  20   5 b  20   6 c  20   7 d  20   8 a  30   9 b  30   0 c  30   1 d  30   2 を、2列目の項目番号を行、1列目の記号を列として (エクセルのピボットテーブルのようなイメージです) 以下のように並べ替えたいのです。 [出力ファイル] No.  a  b  c  d 10  1  2  3  4 20  5  6  7  8 30  9  0  1  2 これをawkスクリプトで書きたいのですが、 どのように書けばよいでしょうか? ※下記2点は希望ですが、難しければ非対応でも大丈夫です。  ・入力ファイルの1行目は一応abcdの順番にきれいに並んでいるものですが   順番がabdcなどとずれていても処理できるスクリプトにしたいです。  ・出力後のabcdの列順序は、スクリプトを修正することで   自由に変更できるとさらに助かります。 教えてください。 よろしくお願いいたします。

  • 特定の列が再計算された時に実行するマクロ

    excelで、特定の列に計算式(SUM)が入っています。 その列が再計算され、結果が1より大きくなったら、そのセルと同じ行の、他の列の値を変更するマクロを作りたいと思っております。 Worksheet_Calculateだと、再計算されたセルを特定できないと伺いました。 なので、再計算されたセルと同じ行で、他の列の値を変更することができません。 Worksheet_Changeだと計算式による変化は扱えないようなので・・・。 このような場合、どうすればいいか教えていただけないでしょうか。 よろしくお願いいたします。