エクセルについての質問です。

自分の使っているエクセルシートにはA列~F列まで上から下まで1000行程度使って色々なデータがあります。
この中でF列は上から下まで
【  】 :::【  】
という文章が載っています。F列に1行ずつ登録しているのですが下記のサイト
http://www.kosho.or.jp/public/book/detailsearch.doで検索後
からエクセルに移行する場合に「Alt+Tab」キーで切り替えるのですが通常、切り替えると
カーソルはA列にあるのですがこれを切り替えると同時にカーソルがF列にあるように
する事はできるでしょうか。
ちなみにサイトはこれしか利用しませんが何度も切り替えます。
エクセルは2003です。

回答の条件
  • 1人5回まで
  • 登録:2009/10/31 04:20:12
  • 終了:2009/11/07 04:25:02

回答(2件)

id:vegah No.1

vegah回答回数496ベストアンサー獲得回数22009/10/31 11:42:08

ポイント35pt

入力フォームを使う方法はいかがでしょうか。

F1セルがF列の項目見出しが入っているものとして、

F1からF1000(一番下の行)までを選択した状態で、

メニューバーから『データ』『フォーム』をクリックします。

確認メッセージが表示されるかもしれませんが、F1が項目見出しになっていれば、『OK』をクリックします。

これで、F2から順に下のセルにカーソルが移動しながら入力されるように入力フォームが表示されます。

id:ken3memo No.2

ken3memo回答回数246ベストアンサー獲得回数772009/11/02 05:46:43

ポイント35pt

少し(イヤだいぶかも)的から外れているかもしれませんが、サンプル作ってみました。

今回作成したサンプルはOS:Windows XP IE8 Excel2003でテストしました。

http://d.hatena.ne.jp/ken3memo/files/Book1102.xls

[file:ken3memo:Book1102.xls]

です。(裸の.xlsなのでダウンロード時 警告出るので、そのまま開かないで保存してから使ってください)

動かしながら、下の解説を見てください。※百聞は一見に...

↑↓が完成するまでの下書きは http://d.hatena.ne.jp/ken3memo/20091102/1257102258 を見てください。

シートに下記のコードを貼り付けます。

貼り付け手順:シートのイベントにコードを書きたいので、

シートの名前の上にカーソルを

合わせてから右クリック、

コードの表示を選択する

[f:id:ken3memo:20091031063342j:image]

Option Explicit

'ダブルクリックのイベント
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 1 Then  'A列の場合だけ、処理する。
        Call ie_test(Target.Value)   'クリックされた場所の値をIEに渡す。
        Cells(Target.Row, 6).Select  'F列の選択
    End If
End Sub

'本のタイトルを受け取り、IEを起動して、書名にセットします。
Private Sub ie_test(bookname As String)

'起動済みのIEを探す
    Dim objShell  As Object   'Shell.ApplicationのWindowから探したいので
    Dim objIE     As Object   'IEを入れる箱(捕まえてコントロールしたい)
    Dim n         As Integer  'カウンターです。

    'これで、エクスプローラーのウインドウを取得する
    Set objShell = CreateObject("Shell.Application")
    Set objIE = Nothing  '初期化する(フラグ代わりも兼ねて、後でIs Nothingでチェックしたいので)

    '後ろから探す(素直に前から探してよ(笑))
    '.Windowsでエクスプローラーとインターネットエクスプローラー(FullNameがIEXPLORE.EXE)にさわれる
    For n = objShell.Windows.Count To 1 Step -1  'MAXから-1ひいてく感じ
        '.FullNameで普通のファイルエクスプローラーとIE(インターネットエクスプローラー)を区別する
        If Right(UCase(objShell.Windows(n - 1).FullName), 12) = "IEXPLORE.EXE" Then
            Set objIE = objShell.Windows(n - 1) 'n番目のウインドウ(FullNameがIEXPLORE.EXE)を代入
            Exit For '見つけたので、↑代入後、強制的にループを抜ける
        End If
    Next
    Set objShell = Nothing

'もし起動済みのIEが見つからなければ、新たに起動する
    If objIE Is Nothing Then  '上で見つけられたか?
        Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。
    End If
    objIE.Visible = True      '可視、Trueで見えるようにします。
   
'処理したいページを表示します。
    objIE.Navigate "http://www.kosho.or.jp/public/book/detailsearch.do"  '.Navigate メソッドで表示する。
    
'↑上記のページの表示が完了するまで待ちます。
    While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。
        DoEvents  '重いので嫌いな人居るけど。
    Wend
       
'ページが表示されたので、表示された文章に対して、処理を行います。
    objIE.Document.all("p_shomei").Value = bookname 'A列の値を 書名にセットする。
  
    '検索開始を押す
    'リンクのアンカーオブジェクトをクリックする
    Dim objFDOC As Object  'ドキュメントを保存する
    Set objFDOC = objIE.Document '代入別に代入しなくてもいいけど。

    'リンク情報からオブジェクトを探し.Clickする
    For n = 0 To objFDOC.Links.Length - 1 'リンク数分まわす
        Debug.Print objFDOC.Links(n).href 'デバックで表示する
        'リンク先のAタグの中(.InnerHTML)をチェックする(検索開始を探す)
        If InStr(objFDOC.Links(n).innerHTML, "検索開始") > 0 Then
            objFDOC.Links(n).Click  '.Clickでクリックしてみた
            Exit For  '見つかったので強制的にループを抜ける
        End If
    Next n
  
'データセット後にIEを前面にする方法がわからなかったので、とりあえず、Excelを最小化してごまかす
    Application.WindowState = xlMinimized  'excelの最小化
  
End Sub

テストの動画 http://www.youtube.com/watch?v=HNO4hq-KYas


今回作成したサンプルはOS:Windows XP IE8 Excel2003でテストしました。

http://d.hatena.ne.jp/ken3memo/files/Book1102.xls

[file:ken3memo:Book1102.xls]

です。(裸の.xlsなのでダウンロード時 警告出るので、そのまま開かないで保存してから使ってください)

※動作を確認してみてください。

完成するまでの下書きは http://d.hatena.ne.jp/ken3memo/20091102/1257102258 を見てください。

  • id:kn1967
    >切り替えるとカーソルはA列にある

    (動作1)A列に書籍名や著者名などを入れる。
    (動作2)ブラウザに切り替えて検索サイトで検索を行い。コピー。
    (動作3)Excelに戻ってくるとA列にセルがあるのだけど、ペーストしたいのはF列なので、
      Excelに戻った時点で、F列がアクティブになっていて欲しい。

    以上は、私の勝手な推測に過ぎませんが、
    どうしてA列にカーソルが存在するのかを説明しないと判らないという輩も多いと思うし、
    昨日質問なされた http://q.hatena.ne.jp/1256761276 のように、
    そこまで考えずに適当に答える輩も多いので、面倒ではありますが、
    予防策として、適宜説明しておく事をお勧めします。

    なお、
    本件に関しては数分前に質問された http://q.hatena.ne.jp/1256929671 のほうで、
    一度に行う方法のほうがよろしいです。
    Excelに戻ってくるだけで無条件にF列がアクティブになるような仕様だと、
    他の操作を行いたくなった時に面倒になりますし、
    そもそもマクロを使うのであればF列をアクティブに切り替えずとも、
    F列の内容を書き換える事が可能になります。

    以上、質問に対する直接的回答ではありませんので、コメント欄とします。
  • id:hakkyoku
    F列であれば どこでも良いのでしょうか?
    (F1 でも F2 でも良いとゆう事でしょうか?)
    それとも F列の入力されたデータの最後の行の下が良いとかですか?
  • id:seconduser2008
    お二人様ともご協力頂き誠に有難うございます。
    現在、色々試行錯誤しておりますので今しばらくお待ちくださいませ。
    ちなみに後者の方のご質問ですが
    例えばA5できりかえればF5にカーソルがくるようにしたいと考えております。

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

トラックバック

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません