Excel VBA質問箱 IV

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

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


3584 / 13644 ツリー ←次へ | 前へ→

【61114】グラフシート(チャートシート)の左上にスクロールしたい ほんこ 09/4/10(金) 9:47 質問[未読]
【61130】Re:グラフシート(チャートシート)の左上... Jaka 09/4/10(金) 15:46 発言[未読]
【61151】Re:グラフシート(チャートシート)の左上... ほんこ 09/4/13(月) 9:05 お礼[未読]
【61157】Re:グラフシート(チャートシート)の左上... n 09/4/13(月) 21:15 発言[未読]
【61199】Re:グラフシート(チャートシート)の左上... Abyss 09/4/16(木) 0:46 発言[未読]
【61291】Re:グラフシート(チャートシート)の左上... ほんこ 09/4/23(木) 8:43 お礼[未読]

【61114】グラフシート(チャートシート)の左上に...
質問  ほんこ  - 09/4/10(金) 9:47 -

引用なし
パスワード
   質問があります。
EXCEL2003 PIAを使いC#が開発環境です。
がVBAでの回答で結構です。
グラフシート(チャートシート)を表示した際に、シートがウィンドウより大きい場合、左上を表示するようにスクロールしたいのですが、普通のワークブックのように

 ActiveWindow.ScrollColumn = 1
 ActiveWindow.ScrollRow = 1

とやってみたのですが、エラーが出てしまいます。
どうしたら、チャートシート上で、シートの左上が表示されるようにできますか?
ご教授いただけたらと思います。
よろしくお願いします。

【61130】Re:グラフシート(チャートシート)の左...
発言  Jaka  - 09/4/10(金) 15:46 -

引用なし
パスワード
   はずかしながら、SendKeys技

Application.SendKeys "+{PGUP}"
Application.SendKeys "%{PGUP}"

【61151】Re:グラフシート(チャートシート)の左...
お礼  ほんこ  - 09/4/13(月) 9:05 -

引用なし
パスワード
   Jaka さん、ありがとうございます。
他になければ使わせていただきます。
他の方法も、もしあればご教授お願いいたします。

【61157】Re:グラフシート(チャートシート)の左...
発言  n  - 09/4/13(月) 21:15 -

引用なし
パスワード
   >グラフシート(チャートシート)を表示した際に、シートがウィンドウより大きい場合...
というのがよく解らないのですが、WindowのサイズやZoomを変えたりした場合という事ですか?

Chartの SizeWithWindow プロパティをTrueにしておくというわけにはいかないんですよね?
([表示]-[ウィンドウに合わせてサイズ変更])

もしかしたら、以下のような感じでできるかもしれませんが、ちょっと不足かも。

Sub test()
  Dim z As Double
  
  z = ActiveWindow.Zoom
  With ActiveChart
    .SizeWithWindow = True
    .SizeWithWindow = False
  End With
  ActiveWindow.Zoom = z
End Sub

【61199】Re:グラフシート(チャートシート)の左...
発言  Abyss  - 09/4/16(木) 0:46 -

引用なし
パスワード
   とにかくScrollさせたいなら↓の方法で。

Private Declare Function FindWindowExA Lib "User32" _
  (ByVal hParent As Long, _
   ByVal hChildAfter As Long, _
   ByVal lpszClass As String, _
   ByVal lpszWindow As String) As Long
  
Private Declare Function SendMessageA Lib "User32" _
  (ByVal Hwnd As Long, _
   ByVal Msg As Long, _
   ByVal wParam As Long, _
   ByVal lParam As Long) As Long

Private Declare Function GetDlgItem Lib "User32" _
  (ByVal Hwnd As Long, _
   ByVal nIDDlgItem As Long) As Long
  
Private Const WM_HSCROLL = &H114&
Private Const WM_VSCROLL = &H115&
Private Const SB_TOP = &H6&

Public Sub ScrollTopLeft()

  Dim Hwnd As Long
  Hwnd = FindWindowExA(Application.Hwnd, 0&, "XLDESK", vbNullString)
  Hwnd = FindWindowExA(Hwnd, 0&, "EXCEL7", vbNullString)
  
  SendMessageA Hwnd, WM_VSCROLL, SB_TOP, GetDlgItem(Hwnd, 2&)
  SendMessageA Hwnd, WM_HSCROLL, SB_TOP, GetDlgItem(Hwnd, 4&)

End Sub

なお、C#用にAPIを変換するならこちらが
ご参考になるでしょう。

http://www.pinvoke.net/default.aspx/user32.FindWindowEx
http://www.pinvoke.net/default.aspx/user32.SendMessage

【61291】Re:グラフシート(チャートシート)の左...
お礼  ほんこ  - 09/4/23(木) 8:43 -

引用なし
パスワード
   Abyss さん、nさんありがとうございます。
解決しそうです。
またC# の参考URLまでありがとうございました。今後も役立ちそうです。

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