プロが教えるわが家の防犯対策術!

よろしくお願いします。
例えば、
A列に文字を入力しています(入力範囲はA1:A300)
A15が最後の入力となりました。
A16以降の行をA300まで閉じる。
このマクロを、他のシートからマクロにて選択したときに処理をしたいのですが。
環境は、XP・2003です。

A 回答 (3件)

>A16以降の行をA300まで閉じる


とは行を「表示しない」にするということでよいですか?

以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。どのシートを開いた状態で実行しても動作すると思います。
なお2行目のシート名は実際の名前に変更して下さい

Sub Macro1()
Const ws As String = "Sheet1" 'シート名を修正する
Dim LastR As Long
 LastR = Worksheets(ws).Range("A65536").End(xlUp).Row
 If LastR < 300 Then
  Worksheets(ws).Rows(LastR + 1 & ":300").Hidden = True
 End If
End Sub

この回答への補足

さっそくの回答、ありがとうございます!
質問ですが、下記の!A65536"は、どのような意味があるのでしょうか?
入力範囲がA1:A300と限定されている場合も、関係が有るのでしょうか?
LastR = Worksheets(ws).Range("A65536").End(xlUp).Row

補足日時:2007/07/10 16:08
    • good
    • 0

#01です


>下記の!A65536"は、どのような意味があるのでしょうか?
シートの最下行から上方向に検索して最後の行を見つけるということです(Office2003までは最下行が65536行になる)

301行よりも下にデータがあるなら
LastR = Worksheets(ws).Range("A300").End(xlUp).Row
に変更してください
    • good
    • 0
この回答へのお礼

再度に渡り返答をありがとうございました!
早速応用させていただきます。
これからもよろしくお願いします。

お礼日時:2007/07/12 13:27

>下記の!A65536"は、どのような意味があるのでしょうか


エクセル2007出現までは、最大行数は65536行でした。
ですからA列最下行は、A65536セルでそこをポイントして
ENDキーー>↑きーで最終データ行に行き着くのですがその操作をコード化したものです。
毎日のように、このOKWAVEのVBAの回答に出てきます。
ーー
下記のようなのも可能です。
Sub test01()
d = Range("A65536").End(xlUp).Row
MsgBox d
d = Range("B1").SpecialCells(xlLastCell).Row
MsgBox d
Range("A2:B" & d).Select
End Sub
ーー
d = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row
MsgBox d
なども可能です。
入力などで、途中行以下は、絶対データを入れないなら
d = Range("A300").End(xlUp).Row
などとします。
ーー
>A16以降の行をA300まで閉じる。
閉じるとは言いません。
非表示にするということかな。
(例)Rows("2:3").EntireRow.Hidden = True
第2第3行を非表示にする。
ブックを閉じる、ウィンドウ画面を閉じるとか使いますが、セル範囲やシートには、閉じるは、使いません。
ーー
非表示にする必要は無いのでは。通常それ以下に入力が無いからといって、非表示にしないのでは。
ーー
>このマクロを、他のシートからマクロにて選択したときに処理をしたいのですが。
意味がわからない。
>マクロにて選択したときにーー>マクロのことを実行したときに
シートの選択を変えたとき、の意味か。
あるシートを入力していて、>他のシートから・・
というのはどういう場面ですか。
エクセルの用語の勉強や、独りよがりの表現にならぬよう良く考えてください。
    • good
    • 0

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