Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11779 / 13645 ツリー ←次へ | 前へ→

【14200】指定したブック、シート、セルのアクティ... たろう 04/5/23(日) 15:43 質問[未読]
【14203】Re:指定したブック、シート、セルのアクテ... ぴんち 04/5/23(日) 17:14 回答[未読]
【14204】Re:指定したブック、シート、セルのアクテ... Asaki 04/5/23(日) 17:15 回答[未読]
【14221】Re:指定したブック、シート、セルのアクテ... たろう 04/5/24(月) 0:36 お礼[未読]

【14200】指定したブック、シート、セルのアクティ...
質問  たろう  - 04/5/23(日) 15:43 -

引用なし
パスワード
   はじめまして。一つ質問させていただきたいと思います。
開いたファイルの指定したシートの指定したセルを
アクティブにするというコードを書いてみました。
私が書いたコードを実行すると
「アプリケーション定義またはオブジェクト定義のエラーです」
という内容のエラーが出ました。
Workbooks(temp).Worksheets("Sheet3").Activate
と記述してシート3をアクティブにするところまではできるの
ですがどうもセルをアクティブにできないようです。
アクティブにする処理の部分を
  Workbooks(temp).Worksheets("Sheet3").Activate
  Worksheets("Sheet3").Range("A4").Activate
のように書き直してみたらうまくいきました。
Workbooks("test_macro.xls").Worksheets("sheet1").Range("a1").Value = 10
のような記述の仕方は見たことあるのですがこのように
一行で書くことはできないのでしょうか?


Sub openfile()
Dim Filename As String
Dim temp As String
  Filename = Application.GetOpenFilename("EXCELファイル (*.xls),*.xls")
  Workbooks.Open Filename
  temp = ActiveWorkbook.Name
  Workbooks(temp).Worksheets("Sheet3").Range("a3").Activate
End Sub

【14203】Re:指定したブック、シート、セルのアク...
回答  ぴんち  - 04/5/23(日) 17:14 -

引用なし
パスワード
   ▼たろう さん:

>Workbooks(temp).Worksheets("Sheet3").Activate
>と記述してシート3をアクティブにするところまではできるの
>ですがどうもセルをアクティブにできないようです。

Workbooks(temp).Worksheets("Sheet3").Range("a3").Activate
この場合、Worksheets("Sheet3")がアクティブになっていないとエラーになります。

Sub openfile()
  Dim Filename As String
  Filename = Application.GetOpenFilename("EXCELファイル (*.xls),*.xls")
  If Filename <> "False" Then
    Workbooks.Open Filename
    On Error Resume Next
    Application.Goto Reference:=ActiveWorkbook.Worksheets("Sheet3").Range("A3"), scroll:=True
    'Goto失敗:Sheet3が非表示/インデックス無効:Sheet3無し
    If Err.Number > 0 Then
      MsgBox Error(Err.Number)
      Err.Clear
    End If
  End If
End Sub

>Workbooks("test_macro.xls").Worksheets("sheet1").Range("a1").Value = 10
アクティブにする理由は?
コピーしたり、値を付加したりするならば、ActivateやSelectを省いて
Workbooks("Book1.xls").Worksheets("sheet1").Range("a1").Value = _
Workbooks("Book2.xls").Worksheets("sheet2").Range("b1").Value
など。

【14204】Re:指定したブック、シート、セルのアク...
回答  Asaki  - 04/5/23(日) 17:15 -

引用なし
パスワード
   こんにちは。

Select(Activate) する場合は、
その親オブジェクトが既にSelectされていないとだめです。
つまり、セルをSelectするには、SheetがSelectされていなければいけない、
ということです。

Select = 選択する
ということを手作業でやる場合、
シートを表示 → セルを選択
になりますよね?

【14221】Re:指定したブック、シート、セルのアク...
お礼  たろう  - 04/5/24(月) 0:36 -

引用なし
パスワード
   ぴんちさん、Asaki さん:
ご返答大変ありがとうございました。
ファイルを開いた後に指定したファイルの指定したシートの指定したセルを
アクティブにすることでファイルが開かれた後の手間を少しでも省ければと
思っておりました。
本当にありがとうございました。

11779 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free