註冊
登錄
首頁
論壇版規
禁止列表
說明
地圖
數位書香
私人消息 (0)
公共消息 (0)
論壇任務 (0)
系統消息 (0)
好友消息 (0)
帖子消息 (0)
麻辣家族討論版版
»
Excel程式區
» 類似移動指引線的效果
 
1
2
返回列表
下一主題
上一主題
發帖
[發問]
類似移動指引線的效果
栗栗子
發短消息
加為好友
栗栗子
當前離線
UID
22956
帖子
6
主題
1
精華
0
積分
50
金錢
50
點名
0
作業系統
Windows 7
軟體版本
Office 2007
閱讀權限
20
性別
女
來自
Taiwan
在線時間
78 小時
註冊時間
2015-12-10
最後登錄
2017-10-19
中學生
帖子
6
主題
1
精華
0
積分
50
點名
0
作業系統
Windows 7
軟體版本
Office 2007
閱讀權限
20
性別
女
來自
Taiwan
註冊時間
2015-12-10
最後登錄
2017-10-19
11
#
跳轉到
»
發表於 2015-12-24 13:10
|
只看該作者
本帖最後由 栗栗子 於 2015-12-24 13:12 編輯
回復
10#
stillfish00
非常感謝S大解惑,很抱歉之前忘記附檔了,這是第二個附件
Index_2.zip
(91.7 KB)
下載次數: 5
2015-12-24 11:45
1. 如 圖一,發現如果將vline指向座標2015/5/16,右方日期卻顯示2015/5/19,無法精準的對上座標。
下載
(101.09 KB)
2015-12-24 11:25
另外,
Index_3.zip
(92.06 KB)
下載次數: 8
2015-12-24 13:12
這是用S大提供的修改過後的程式碼的附件,會出現型態不符合的error><
2.原來 Chart.MouseMove 事件會自動傳入值,感謝S大受教了 ~
另外查了一些物件類別模組的使用方法,https://msdn.microsoft.com/zh-tw/library/office/ff192938.aspx
還是不太理解,可以請大大舉一個簡單的例子說明一下嗎 > <
3.還有一個額外的問題,下面這一段程式碼,為什麼在計算 x 的 pt 時要再乘上 75 呢 ? 這個數字是怎麼來的 ?
pt_x = 75 * x / ActiveWindow.Zoom
複製代碼
再麻煩大大了,非常感謝 : )
TOP
stillfish00
發短消息
加為好友
stillfish00
當前離線
UID
9276
帖子
1018
主題
15
精華
0
積分
1058
金錢
1058
點名
0
作業系統
win7 32bit
軟體版本
Office 2016 64-bit
閱讀權限
50
性別
男
來自
桃園
在線時間
1141 小時
註冊時間
2012-5-9
最後登錄
2022-9-28
大學生
帖子
1018
主題
15
精華
0
積分
1058
點名
0
作業系統
win7 32bit
軟體版本
Office 2016 64-bit
閱讀權限
50
性別
男
來自
桃園
註冊時間
2012-5-9
最後登錄
2022-9-28
12
#
發表於 2015-12-24 15:07
|
只看該作者
本帖最後由 stillfish00 於 2015-12-24 15:11 編輯
回復
11#
栗栗子
1. indx = Application.Match(targetX, arValue, 1)
這句 arValue 改成 arValues , 筆誤。
3. 我也是上網查的,你在查 Chart 的 InsideLeft 或 InsideWidth 這些屬性時都會告訴你它是以"點"為單位,一個點定義是1/72英吋 (也有人定義為1/72.27英吋)。
而傳入參數的 x , y 單位是 pixel(像素);根據windows內顯示器 DPI(dot per inch) 設定可決定每英吋多少像素,一般預設為 normal size 100% (=96 DPI),表示每英吋 96 像素。
所以要把 x 像素轉成點要乘以 72/96=0.75
還要考慮 zoom , 所以變成 0.75*x/(ActiveWindow.zoom/100) = 75*x/ActiveWindow.zoom
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。
TOP
stillfish00
發短消息
加為好友
stillfish00
當前離線
UID
9276
帖子
1018
主題
15
精華
0
積分
1058
金錢
1058
點名
0
作業系統
win7 32bit
軟體版本
Office 2016 64-bit
閱讀權限
50
性別
男
來自
桃園
在線時間
1141 小時
註冊時間
2012-5-9
最後登錄
2022-9-28
大學生
帖子
1018
主題
15
精華
0
積分
1058
點名
0
作業系統
win7 32bit
軟體版本
Office 2016 64-bit
閱讀權限
50
性別
男
來自
桃園
註冊時間
2012-5-9
最後登錄
2022-9-28
13
#
發表於 2015-12-25 09:59
|
只看該作者
回復
11#
栗栗子
修改 myVLine.Left 從該資料點的 left 屬性取得,如下
你說的無法精準的對上座標,那是你資料太密集,圖表本身日期座標軸就會這樣(每個月天數是不同的,它卻同間隔)
Private Sub myChartClass_MouseMove(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
Dim pt_x As Double, interval As Double, indx As Long
Dim arValues, targetX, diffX
Dim isAxisBetween As Boolean, xOffset
pt_x = 75 * x / ActiveWindow.Zoom
With myChartClass
If .SeriesCollection.Count = 0 Then Exit Sub
isAxisBetween = .Axes(xlCategory).AxisBetweenCategories '座標軸位置 刻度間:True 刻度上:False
arValues = .SeriesCollection(1).XValues '日期資料
diffX = .Axes(xlCategory).MaximumScale - .Axes(xlCategory).MinimumScale
xOffset = IIf(isAxisBetween, 0.5 * .PlotArea.InsideWidth / (diffX + 1), 0)
If pt_x < .PlotArea.InsideLeft + xOffset Then
indx = 1
Else
targetX = .Axes(xlCategory).MinimumScale + diffX * (pt_x - .PlotArea.InsideLeft - xOffset) / (.PlotArea.InsideWidth - 2 * xOffset)
indx = Application.Match(targetX, arValues, 1)
If indx < UBound(arValues) Then If Abs(targetX - arValues(indx + 1)) < Abs(targetX - arValues(indx)) Then indx = indx + 1 '修正最近資料點
End If
myVLine.Left = .SeriesCollection(1).Points(indx).Left
myTarget.Cells(1).Value = arValues(indx)
For i = 1 To .SeriesCollection.Count
With .SeriesCollection(i)
.ApplyDataLabels Type:=xlDataLabelsShowNone
.Points(indx).ApplyDataLabels Type:=xlDataLabelsShowValue
.Points(indx).DataLabel.Format.Fill.ForeColor.RGB = RGB(255, 255, 0)
arValues = .Values
If i < myTarget.Cells.Count Then myTarget.Cells(i + 1).Value = arValues(indx)
End With
Next
End With
End Sub
複製代碼
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。
TOP
靜思自在 :
受人點水之恩,須當湧泉以報。
 
1
2
返回列表
下一主題
上一主題
Excelㄧ般區
Access
EXCEL專屬討論區
Excelㄧ般區
Excel程式區
進階應用專區
OFFICE 系列
Word
PowerPoint
Access
Office不分區
程式語言
VB 與 VB.Net
C 與 C#
Java 與 J#
程式設計不分區
資料庫
ORACLE
My SQL
MS SQL
網頁設計
ASP 與 ASP.NET
PHP
PHP+MySQL 入門實作
JavaScript
FLASH / ActionScript
HTM/ HTML/ CSS
網頁設計不分區
電腦與作業系統
電腦各種硬體討論
一般電腦軟體討論
論壇事務
管理公告
投訴反映
新手測試
愛 • 生活
公益佈告欄
生活與感動
[收藏此主題]
[關注此主題的新回復]
[通過 QQ、MSN 分享給朋友]
申請友情鏈接
Facebook粉絲