EXCEL97のマクロです。

セルA1が画面の左上隅に表示されている状態(デフォルト)において、
例えば、セルH8を画面の左上隅(セルA1が表示されていた場所)に移動させたい。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:sttjapan No.1

回答回数147ベストアンサー獲得回数0

http://www.hatena.ne.jp/1120094369#

人力検索はてな - EXCEL97のマクロです。 セルA1が画面の左上隅に表示されている状態(デフォルト)において、 例えば、セルH8を画面の左上隅(セルA1が表示されていた場所)に移動させたい..

これは「内容を移したい」ということでしょうか?それならコピーして張り付けることで上手くいくはずです。

それとも「H8が一番左上になきゃ嫌だ」ということでしょうか?そしたら列や行の幅を変えて、A~G列の高さと1~7行の幅を0にしてみたらどうでしょう?

もっと技術的な質問をしているのであったらくだらない回答ですみません。

id:aqua99

H8のセル自体を左上隅に移動させるマクロです。

ファイルを開いたときにセルA1が左上隅に表示されていたとして、

カーソルをH8に移動させるのではなく、セルH8を

左上隅に移動させたい。

2005/06/30 11:18:15
id:NasuButter No.2

回答回数26ベストアンサー獲得回数0

ポイント10pt

http://www.sigoto.co.jp/excel/

Excel全開VBA

↑はダミーです

ちょっと乱暴な方法ですが


Selection.End(xlDown).Select

Selection.End(xlToRight).Select

Application.Goto Reference:=”R8C8”


で出来ました

当方の実行環境はEXCEL2000ですが、多分支障は無いはずです

id:aqua99

カーソルがそのセルに移動はしますが、そのセルが左上隅には行きませんが。

2005/06/30 12:44:43
id:MXF03305 No.3

回答回数21ベストアンサー獲得回数0

ポイント60pt

移動する量が決まっている場合、たとえばシートの左上がA1を指しているとき、H8を左上にもって来たい場合は


ActiveWindow.SmallScroll ToRight:=7

ActiveWindow.SmallScroll Down:=7


とすればH8がシート左上にスクロールしてきます。

id:aqua99

Range(”A1”).Selectと組み合わせればいきますね。

どもです。

2005/06/30 12:53:17
id:sttjapan No.4

回答回数147ベストアンサー獲得回数0

たびたびすいません。

えっと、二つ目の回答なら見た目はH8を一番左上に持って来れます。

id:aqua99

OS:XP

EXCEL97 SR2の環境では、左上に移動しませんでした。

2005/06/30 12:56:54
  • id:aqua99
    結局

    MXF03305さんの回答を応用して、
    Range(”H8”).Select
    ActiveWindow.SmallScroll ToRight:=0
    ActiveWindow.SmallScroll Down:=0
    で、H8を移動することができました。
  • id:MXF03305
    Re:結局

    MXF03305です。中途半端ですいません。
    Office2000の環境でするとSelectした時点でA1が左上のままだったり
    画面がそのまま移動しなかったりします。
    Range(”A1”).Select
    ActiveWindow.SmallScroll ToRight:=Range(”H8”).Column - 1
    ActiveWindow.SmallScroll Down:=Range(”H8”).Row - 1
    にするのもの1つの手かと思われますので参考にしてください。
  • id:kamonegijapan
    (投稿者削除)

  • id:kamonegijapan
    Re(2):結局

    とりあえず、対象のセルより左の列と、対象のセルより上のセルを非表示にするというやり方を。(スクロール幅の影響を受けません)
    要らない行と列を削除して、本当にA1にしてしまうことも可能です。

    ********以下サンプル*********
    ’選択中のセルをA1の位置に表示する
    Sub setActiveCellToA1()

    Dim targetColumn As Long ’左上に表示したい列のインデックス
    Dim targetRow As Long ’左上に表示したい行のインデックス

    ’隠すべき行と列の端を取得
    targetColumn = ActiveCell.Column - 1
    targetRow = ActiveCell.Row - 1

    ’一回全部表示させる(行列を削除して詰めてしまうならこの処理は不要)
    showAllCells

    ’列を隠す(すでに左端ならば何もしない)
    If targetColumn > 0 Then
    Range(Columns(1), Columns(targetColumn)).Select
    ’表示位置が左上になれば良いだけなら(1)
    ’列を削除して本当にA列にしたいなら(2)
    Selection.EntireColumn.Hidden = True ’…(1)
    Selection.EntireColumn.Delete ’…(2)
    End If

    ’行を隠す(すでに1行目ならば何もしない)
    If targetRow > 0 Then
    Range(Rows(1), Rows(targetRow)).Select
    ’表示位置が左上になれば良いだけなら(1)
    ’行を削除して本当に1行目にしたいなら(2)
    Selection.EntireRow.Hidden = True
    Selection.EntireRow.Delete
    End If

    ’動かしたカラムにフォーカス
    Cells(1, 1).Activate
    End Sub
    Sub showAllCells()

    ’セルを再表示
    Cells.Select
    Selection.EntireColumn.Hidden = False
    ’行を再表示
    Rows.Select
    Selection.EntireRow.Hidden = False

    End Sub
  • id:NasuButter
    NasuButter 2005/06/30 17:10:27
    メンボクない

    すんません。シート内に空白セルが混在する場合に全然対応できてませんでした
    やるならば、こう、でした

    ’先ず適当な位置まで右下に飛んで
    Range(”z50”).Select
    ’h8に戻る
    Application.Goto Reference:=”R8C8”

    もっとも、MXF03305さんの回答と、その応用例の方が圧倒的にスマートなので
    蛇足ながらの補足です。失礼しました

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません