マクロで入力済の最初のセルを取得したい(1/2)

解決済みの質問

マクロで入力済の最初のセルを取得したい

マクロはまったくの初心者なのですが、シートに入力されている最初のセルを取得(行と列の番号)したいと思って下記の通りやってみたのですがうまくいきません。
  Gyou = 1
  Retu = 1
Chek1:
   Maxcol = Cells(Gyou,Retu).End(xlToRight).Column
   If MaxCol <> 0 then
    GoTo Chek2
   End If
  If Gyou < 65536 then
    Gyou = Gyou + 1
    GoTo Chek1
  End If
Chek2:
  MsgBox Maxcol
としたのですが、入力されているセルはB3、C5だけです。
結果、MsgBox に表示されたのは256でした。
一番最初に入力されているセルはB3なのでMsgBoXには2と表示されると思ったのですがだめでした。
どこがおかしいのか自分では全然わかりません。あと、一番最初に入力されているセルの行番号も取得したいのですが、どなたかお教え下さい。よろしくお願いします。

投稿日時 - 2009-09-09 11:09:30

連想キーワード:

QNo.5275133

困ってます

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

割り込みさせていただきます。

>実行すると $A$1:$B$5 と答えは出ましたが
>処理の都合上、SCell = $A$1、ECell = $B$5 と
>分解したいのですがわかりません。

パターンとしては、通常こういう書き方をするはずです。
つまり、Address プロパティは取っていても、Range オブジェクトは取得しています。


'-------------------------------------------
Sub TestRange1()
  Dim first As String
  Dim last As String
  With Worksheets("Sheet1").UsedRange
    first = .Cells(1).Address
    last = .Cells(.Cells.Count).Address
  End With
  MsgBox "最初: " & first & " 最後: " & last
End Sub

投稿日時 - 2009-09-10 13:35:53

お礼

早速のご返事、ありがとうございました。

投稿日時 - 2009-09-10 14:50:03

ANo.10

1人が「このQ&Aが役に立った」と投票しています

[  前へ  |  ]

ベストアンサー以外の回答(10件中 1~5件目)

ANo.11

> $A$1:$B$5 と答えは出ましたが
> 処理の都合上、SCell = $A$1、ECell = $B$5 と
> 分解したいのですがわかりません。

TopLeftCell
BottomRightCell
を使う手もありますね。
詳細はご自分でお調べください。

投稿日時 - 2009-09-10 13:59:40

お礼

早速のご返事、有難うございました。

投稿日時 - 2009-09-10 14:49:19

ANo.9

>処理の都合上、SCell = $A$1、ECell = $B$5 と分解したいのですがわかりません。

Split()で文字列を分割する事も可能です。
-------------------------------------------------
Dim Hani
Dim ADR
Hani = Worksheets("Sheet1").UsedRange.Address
ADR = Split(Hani, ":")
MsgBox ADR(0)
MsgBox ADR(1)
--------------------------------------------

下記のようにする事も出来ます。

MsgBox ActiveSheet.UsedRange.Cells(0).Address
MsgBox ActiveSheet.UsedRange.Cells(ActiveSheet.UsedRange.Count).Address
----------------------------------------------

投稿日時 - 2009-09-10 13:05:22

お礼

早速のご返事、有難うございます。

投稿日時 - 2009-09-10 14:50:48

ANo.8

#3の回答者です。

For ~ Next を抜け出すのは、#6さんのお書きになったとおりです。
ほかにも、Do ~ Whileの Exit Do もあります。

Goto を使うと可読性が落ちるという人もいますが、それは違います。そうでなく、コードのまとまりが悪いように思います。

>マクロに関しての参考書等はまったく持っていない

ある程度の書籍は手に入れることをお勧めします。ネットで分かるとはお約束できません。Basicを知っているから、後は、ネットで覚えられるとお思いなのかもしれませんが、必ずしも同じではありません。ネットでは体系的に見れず、ピンポイントですから、いくらやっても蓄積してこないのです。初級文法から、中級・上級と進んで、やっと入門編が終わります。早い人で、2~3ヶ月、遅い人ですと、1年以上掛かります。英会話と同じで、最初はフレーズの単語を入れ替えるように、セルの位置などを換えて、プロシージャにします。

物事は、体系的に骨子を覚え、細かいところは後回しです。

『かんたんプログラミング Excel 2007 VBA 基礎編』技術評論社 大村 あつし (著)
http://www.amazon.co.jp/exec/obidos/ASIN/477413340X

このシリーズは、良い悪いは別として、これぐらいしか体系的に覚えられるものがありません。

VBAエキスパート公式サイト
推薦書籍
http://vbae.odyssey-com.co.jp/training/text.html

投稿日時 - 2009-09-09 23:12:06

お礼

早速のご返事、ありがとうございました。

投稿日時 - 2009-09-10 14:51:27

ANo.7

>マクロに関して参考になるものがインターネットにあれば

VBAのヘルプファイルも参考しましょう。
そしてexcelの関数の使い方や機能等の用語をしっかりと覚える事。
マクロの基本的なオブジェクトやプロパティも覚えておきましょう。

あとはネット検索の達人になることです。
「VBA 範囲取得」「VBA 最後のセル」「VBA For文」「VBA IF文」など、思いつくキーワードを使って検索をする事です。
検索したページの中から、やりたい事に一番近い事が現れたら、そのページの単語をキーに再検索とか・・・。

何度か検索すれば、VBA解説の主要なページがいくつかあることに気づくかと思うので、ブックマークして参考にして下さいね。


エクセルでお仕事
http://www.asahi-net.or.jp/~ef2o-inue/top01.html

投稿日時 - 2009-09-09 18:46:20

補足

いろいろアドバイスありがとうございます。
あつかましいのですが、もうひとつ問題がでてきました。
セルA1、A5、B2に入力された状態で
Hani = Worksheets("Sheet1").UsedRange.Address
を実行すると $A$1:$B$5 と答えは出ましたが
処理の都合上、SCell = $A$1、ECell = $B$5 と
分解したいのですがわかりません。教えて頂くことはできますか?
よろしくお願いします。

投稿日時 - 2009-09-10 10:33:09

ANo.6

>For Next から抜けたい時の方法がわからないので

Exit For
で抜けられます。

投稿日時 - 2009-09-09 16:55:14

補足

ありがとうございます。
マクロに関しての参考書等はまったく持っていないので他の人がコーディングしたのを参考にして、自分なりにあれこれ考えてやっています。そこであつかましいお願いなんですが、マクロに関して参考になるものがインターネットにあれば、それをお教えていただくことはできませんか? よろしくお願い致します。

投稿日時 - 2009-09-09 17:20:54

あわせてチェックしたい
  • Msgboxのループ ...
  • Gotoを使わずに済みますか? ...
  • [Excel2003] On Error GoTo について教えてください。 ...
PR
【夫婦アンケート】バレンタインしてますか?[ 詳細 ]

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら