• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プログラミング初心者です。お世話になります。 )

プログラミング初心者の質問!Excelファイル内のアクティブなセルのアドレスを表示する方法

このQ&Aのポイント
  • プログラミング初心者が作成しているアプリケーションからExcelファイルを開き、アクティブなセルのアドレスを、フォーム上のラベルに表示したいがうまくいかない。
  • シートを表示させることはできたが、アクティブなセルのアドレスを表示させることができない。
  • Cellsの代わりにActiveCellを試してみたが、うまくいかなかった。どのようにすればよいか教えてほしい。

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

  • ベストアンサー
  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.3

| 順次選択したセルのアドレスが表示されるにはどうしたらよいでしょうか? 「選択したセル」 ってことは 自分で選択するんですよね ActiveCell じゃなく Selection で考えるべきでは? 選択した後のセルは Application.Selection.Range で取得でき、 選択したセル範囲の行数は Application.Selection.Range.Rows.Count で取得できる ヒントは Selection と Range ですね 健闘を祈る

yngnhplss
質問者

お礼

Selectionでできました! 何度も丁寧に教えて下さりありがとうございました◎

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.2

Excelのヘルプ見てます? ActiveCellは ApplicationとActiveWindowクラスの配下にしかありませんよ。 それにシートのアクティブ化も最初にしないといけません。 ちゃんと以下のように例が載ってます。 === 次の使用例は、メッセージ ボックスにアクティブ セルの値を表示します。アクティブ シートでない場合、ActiveCell プロパティは失敗するので、プロパティを使う前に、Sheet1 をアクティブにしておきます。 Worksheets("Sheet1").Activate MsgBox ActiveCell.Value ===

yngnhplss
質問者

補足

おっしゃるとおり、Excelヘルプみたら載ってました。 アドレス取り込めました。 ただ、シートを開いたとき、最初に選択されているセルのアドレスが表示されます。当然ですが。 xlSheet.Activate() rng = xlApp.ActiveCell Label7.Text = rng.Address 順次選択したセルのアドレスが表示されるにはどうしたらよいでしょうか? フォームに戻って再格納ボタンのようなものを押すと再格納する、というのが簡単かなと思いましたが、 フォームに戻ってrng.address格納しようとしても、シートが既にactivateじゃないから、実現できないですよね。 何か良い方法ないでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.1

以下の一行を rng = DirectCast(oSheet.Cells(1, 1), Excel.Range) Set rng = ActiveCell で出来ませんかね(そもそもDirectCastする必要性を感じません) そもそもセルもRangeの一部ですから上記で可能なはずですが、、

yngnhplss
質問者

補足

Setはいらないみたいです。Setとかいても自動で消されます。 rng = ActiveCellでは (ActiveCellは宣言されてません)の構文エラー。 rng = xlSheet.ActiveCellではデバックで、 ('System.MissingMemberException' の初回例外が Microsoft.VisualBasic.dll で発生しました。)というエラーになります。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • For~Next ループ内でUnionメソッドを使うとエラーになります。

    下記の記述で2行おきのセル範囲から0以下のセルを除外したセル範囲を取得しようとすると Set Rng = Application.Union(r, Rng) の行でエラーが発生します。 'Set Rng = Range(Cells(12, 7), Cells(12, 7)) の行のコメントアウトをはずすと動きますが、 cells(12,7)の値が0以下だと本来の目的 である0以下のセル範囲を除外するという目的が果たせません。 Union(r,Rng)のRngがnothingになっているとエラーの原因になるのでしょうか? Private Sub test() Dim r As Range Dim Rng As Range 'Set Rng = Range(Cells(12, 7), Cells(12, 7)) For i = 12 To 27 Step 3 If Cells(i, 7) > 0 Then Set r = Range(Cells(i, 7), Cells(i, 7)) Set Rng = Application.Union(r, Rng) End If Next i Rng.Select End Sub 以上教えてください。 お願いします。

  • rangeオブジェクトについて

    こんばんわ。 rangeオブジェクトの行数と列数を出したいのですが、やりかた教えていただけませんでしょうか。 以下のように、方法1と方法2を試しましたが、「オブジェクトが必要です」というエラーになります(;;)ついでに、以下2つがなぜだめかも後学のために教えてください(;;) よろしくお願いします。 方法1-- dim rng as range set rng = range(cells(1,1),cells(2,2)) with rng msgbox .columns(.columns.count).column end with 方法2-- dim rng as range set rng = range(cells(1,2),cells(2,2)) msgbox ubound(range,1) -- エクセル2003

  • VB2005 → EXCELのセルに貼り付け

    いつもお世話になってます。 私はVB入門者です。 取得した値をセルに転載する処理を行っております。 値をセルに貼り付けるのは下記の方法で出来たのですが Dim oExcel As Object Dim oBook As Object Dim oSheet As Object oExcel = CreateObject("Excel.Application") oBook = oExcel.Workbooks.open("C:\hoge.xls") oSheet = oBook.Worksheets(1) oSheet.Range("A2") = hoge_name oSheet.Range("A2") = hoge1_name  ←これをA2のhoge_nameの下段に入れたいのです。 oBook.SaveAs("C:\hoge.xls") oSheet = Nothing oBook = Nothing oExcel.Quit() oExcel = Nothing GC.Collect() 2つの変数をエクセルのひとつのセルに改行して貼り付ける方法を教えて下さい。 又、上書き保存の際に確認のメッセージは不要なのに表示されてしまいます。 どのように書き換えたら良いのでしょうか。 どうぞよろしくお願いします。

  • VBAで、セル(Range)のオブジェクトが取得できない

    セルの情報を取得したいのですが、何故か以下のように書くと上手い具合に取得できません(A、B、Cは数値の変数)。 ------ Dim Rng As Range 'セル範囲を格納 Set Rng = Worksheets(1).Range(Cells(A, B), Cells(A, C)) ------ 以下のようにしてやると、何とか取得できます。 Worksheets(lngASNo + 1).Select Set Rng = Range(Cells(A, B), Cells(A, C)) どこが悪いのでしょうか? もし、判る方がいらっしゃいましたら、よろしくお願いいたします。

  • VBA チェンジイベント 任意のセルに自動表示の仕方

    お世話になります。 見よう見まねでチェンジイベントを使っていましたが、うまくいきません。 マクロで行いたい作業は、 G23からG37のセルに何か入力された場合は、自動的にそのセルの隣のG列に"非課税"と表示させたいのです。とりあえず下記の記述をご覧ください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim rng As Range Set rng = Intersect(Target, Range(Cells(23, 7), Cells(37, 7))) If Not (rng Is Nothing) Then Cells(ActiveCell.Row, 8).Value = "非課税" End If End Sub G列に入力するとH列に"非課税"と入力されるのですが、G列にセルを持っていっただけで、Hに入力がされてしまいます。あくまでG列に何かを入力した時にだけ、Hには"非課税"を表示させたいのですが。。。 どうすればよろしいでしょうか?よろしくご享受くださいませ。

  • CountBlankの範囲指定について

    VBA勉強中の者です 変数にて指定した範囲の空白セルをカウントする為に、以下のコードを作成しました。 Sub test() Dim rng As Range Set rng = Range(Cells(1, 1), Cells(1, 10)) Dim CntBnk As Long '-------↓以下が認識されないコード-------------- CntBnk = WorksheetFunction.CountBlank(ActiveSheet.Range(rng)) '--------------------------------------------------- MsgBox (CntBnk) End Sub CountBlankの範囲指定の方法が間違っていると思われます。 簡単に CntBrk = rng.CountBlank と入力するなどしてみましたが、やはりダメでした。 自分なりに調べつつ改善してみたものの解決に至らず、どなたかご助力お願い致します。

  • VBA教えてください

    VBA初心者です 画像を添付します 赤いセルの背景色に反応し、 C~Eのセルを結合してその中に文字を入れると言うものですが 10/1みたいに全て結合出来れば良いのですが コードを実行した結果 10/5の結果はC~Eのセルは結合されてますが 列の9~11のセルは結合されてないです これをまとめて結合出来るようにしたいです (10/1の結合セルみたいな事をしたいです) コード sub test() const hani as string="A1:E11" dim rng as range for each rng in range(hani) if rng.interior.colorindex= 3 then range(cells(rng.row,3),cells(rng.row,5)).merge cells(rng.row,3).value="停止" end if next rng end sub です。 試行錯誤しましたが変な結果になって手詰まりしてます。 コード書いてもらえるとすごく助かります! 回答お願いします!

  • 入力規則も取り込みたい

    お世話になります。 オートフィルタで抽出したデータに、セルJ1に設定した入力規則をコピーしたいと思いましたが、 セルJ1の値のみしかコピーされません。 '対象日でフィルタをかける d = Range("J4").Value Range("A6").Select Selection.AutoFilter field:=3, Criteria1:=d '表示されたデータだけに承認欄を貼り付ける Dim t As Integer, myrng As Range, rng As Range t = Cells(Rows.Count, 1).End(xlUp).Row Set myrng = Range(Cells(7, 13), Cells(t, 13)).SpecialCells(xlCellTypeVisible) For Each rng In myrng rng = Range("J1") Next この場合、どのようにして、設定された入力規則も貼り付けることができるのでしょうか。 入力規則はリスト形式で、承認、否認を選択させています。 よろしくお願いします。

  • Excel VBAの非表示について(初心者)

    Excel VBAを勉強中の者です。 A列に日付が連続で入っている表で、A1に入力されている一番古い日付から 昨日の日付までを非表示にし、今日の日付を先頭に表示したいと思っています。 Findメソッドで昨日の日付が入っているセルを検索し、A1セルから昨日のセルまでを 非表示にしようと思い下記のようにしてみたのですができませんでした。 Dim i As Range Dim x As Byte Dim y As Byte Set i = Range("A1:A65536").Find(What:=Date-1) x = i.Row Rows("1:x").Hidden = True または x = i.Address Range("A1:x").EntireRow.Select Selection.Hidden = True 教えてください。 よろしくお願いします。

  • ExcellVBA ForNextについて

    VBA勉強中の者です。 早速ですが、質問させて頂きます。 A1からC3に数値があります。 なるだけCellsプロパティを使用し、直接的なセルのアドレス指定をせずに A1+A1をA5、B1+B1をB5、C1+C1をC5、 A1+A2をA6、B1+B2をB6、C1+C2をC6、 A1+A3をA7、B1+B3をB7、C1+C3をC7、と返したいのです。 コードは以下の通りです。 Sub test() Dim rng1 As Range Dim aaa As Integer Dim i As Integer Dim bbb As Integer '------------------------- For aaa = 1 To 3 '------------------------- For bbb = 5 To 7 '------------------------- For i = 1 To 3 '------------------------- Set rng1 = Cells(aaa, i) Cells(bbb, i) = Cells(1, i) + rng1 MsgBox (Cells(1, i) + rng1) '------------------------- Next i '------------------------- Next bbb '------------------------- Next aaa '------------------------- End Sub 数値を返すセルを指定するコードが間違っていると思われ、 複数のセルに同じ数値を何度も返してしまいます。 数日間調べつつ改善しましたがどうしても解決できず、どなたかご助力お願い致します。

契約者の変更
このQ&Aのポイント
  • ぷらら(インターネット接続サービス)で契約者の変更をしたい方へのサポート
  • お困りですか?ぷらら(インターネット接続サービス)の契約者の変更に関するご相談を承ります
  • ぷらら(インターネット接続サービス)で契約者の変更についてのご質問やトラブルについてお答えします
回答を見る