Excel VBA質問箱 IV

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

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


11275 / 76735 ←次へ | 前へ→

【70998】Re:ワークシートの右端の座標を取得したいです
回答  ちび坊主  - 12/1/25(水) 11:22 -

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

右端の座標を拾ってくる関数などは特に無いですね。
ht tp://www.moug.net/faq/viewtopic.php?t=60244&highlight=SendInput
上記URLのAbyssさんのコードをお借りしています。

シート右側のスクロールバーの位置を拾ってきて、そこにMouseを操作して
図形を作成。そのLeftを取得し、作成した図形を削除。

Private Type RECT
   Left As Long
   Top As Long
   Right As Long
   Bottom As Long
End Type

Private Declare Function SetCursorPos Lib "user32" ( _
   ByVal x As Long, _
   ByVal y As Long) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" ( _
   ByVal hWnd1 As Long, _
   ByVal hWnd2 As Long, _
   ByVal lpsz1 As String, _
   ByVal lpsz2 As String) As Long
Private Declare Function GetWindowRect Lib "user32" ( _
   ByVal hWnd As Long, _
   lpRect As RECT) As Long
Private Declare Sub mouse_event Lib "user32" ( _
   ByVal dwFlags As Long, _
   ByVal dx As Long, _
   ByVal dy As Long, _
   ByVal cButtons As Long, _
   ByVal dwExtraInfo As Long)
Private Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down
Private Const MOUSEEVENTF_LEFTUP = &H4 ' left button up

Function GetRWindowPoint(ByRef sngLeft As Single) As Boolean
 Dim Rc As RECT
 Dim hWnd As Long
 
 hWnd = Application.hWnd 'hWnd = FindWindowEx(0, 0, "XLMAIN", Application.Caption)
 hWnd = FindWindowEx(hWnd, 0, "XLDESK", vbNullString)
 hWnd = FindWindowEx(hWnd, 0, "EXCEL7", vbNullString)
 hWnd = FindWindowEx(hWnd, 0, "ScrollBar", vbNullString)
 If hWnd = 0 Then Exit Function
 
 GetWindowRect hWnd, Rc
 AppActivate Application.Caption
 Application.CommandBars.FindControl(ID:=1111).accDoDefaultAction
 
 SetCursorPos Rc.Left - 1, (Rc.Top + Rc.Bottom) \ 2
 mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
 mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0

 DoEvents
 If TypeName(Selection) = "Range" Then Exit Function
 
 With Selection
  sngLeft = .Left
  .Delete
 End With
 GetRWindowPoint = True
End Function

Sub Sample001()
 Dim l As Single
 'ActiveSheetに図形が一つ以上あるとして。
 With ActiveSheet.Shapes(1)
  If GetRWindowPoint(l) Then
   .Left = l - .Width
  End If
 End With
End Sub

4 hits

【70984】ワークシートの右端の座標を取得したいです saya 12/1/23(月) 23:08 質問
【70986】Re:ワークシートの右端の座標を取得したい... kanabun 12/1/24(火) 9:20 発言
【70995】Re:ワークシートの右端の座標を取得したい... saya 12/1/24(火) 22:13 質問
【70998】Re:ワークシートの右端の座標を取得したい... ちび坊主 12/1/25(水) 11:22 回答
【71033】Re:ワークシートの右端の座標を取得したい... saya 12/1/26(木) 22:42 お礼

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