2020年3月30日 星期一

Windows 登入時以系統管理員身分自動執行NTP 校時軟體

Windows 登入時以系統管理員身分自動執行NTP 校時軟體


1.先開啟工作排程器(路徑=Windows系統管理工具/工作排程器)並在「工作排程器程式庫」按下滑鼠右鍵點擊「建立工作


2.輸入工作名稱,並勾選「以最高權限執行

3.換到「觸發程序」,請新增「登入時」這個條件

4.設定「動作」,將執行的程式路徑與參數新增上去

5.接著設定「條件」,如果你用筆電,建議將「只有在電腦是使用 AC 電源時才啟動這個工作」取消勾選,以免用電池時不執行此程式!






2020年2月25日 星期二

combobox 下拉式選單

Adding Items

新增下拉式選單的選項

box.AddItem item[, index]
box    該下拉式選單的物件
item   字串
index   放置該新增字串的位置. 0 在最前面,


範例1

    ComboBox1.AddItem "A"
    ComboBox1.AddItem "B"
    ComboBox1.AddItem "C"

範例2

Private Sub CommandButton1_Click()

    ComboBox1.AddItem TextBox1.Value, 2
   
End Sub



Removing Items

刪除下拉式選單的選項

box.RemoveItem index

box    該下拉式選單的物件

index   欲刪除選項的位置. 0 在最前面,

範例

Private Sub CommandButton1_Click()

    ComboBox1.RemoveItem 0
   
End Sub

Clear Items

清空所有選項

box.Clear

範例

Private Sub CommandButton1_Click()

    ComboBox1.Clear


End Sub



Getting the value of the currently selected item

取得正選取選項的值

box.value

box.text

box    該下拉式選單的物件

value  該選單選項的值

text   該選單選項的文字

以上兩種方法都可以

範例

方法1

Private Sub CommandButton1_Click()

    MsgBox ComboBox1.Text
   
End Sub


方法2

Private Sub CommandButton1_Click()

    MsgBox ComboBox1.Value
   
End Sub



Getting List Items with the List Property

box.List(index)

box    該下拉式選單的物件

index  欲取得選項的位置. 0 在最前面,

範例

Private Sub CommandButton1_Click()

    MsgBox ComboBox1.List(0)
   
End Sub

Returning the Number of Items with the ListCount Property

box.ListCount

box    該下拉式選單的物件

範例

Private Sub CommandButton1_Click()

    MsgBox ComboBox1.ListCount
   
End Sub

VB字串 常用處理函數

Len:計算字串的長度。
範例:strLen=Len("Taiwan")
結果:6


Mid:依開始位置擷取固定長度字串。
範例:strLen=Mid("Taiwan",1,2)
結果:ai


Left:將字串由左側擷取固定長度。
範例:strLen=Left("Taiwan",2)
結果:Ta
 

Right:將字串由右側擷取固定長度。
範例:str=Right(" Taiwan ",2)
結果:an


Lcase:將字串中的大寫字母轉成小寫。
範例:str=Lcase("Taiwan")
結果:taiwan


Ucase:將字串中的小寫字母轉成大寫。
範例:str=Ucase("Taiwan")
結果:TAIWAN


Trim:刪頭尾空白
範例:str=Trim("   Taiwan    ")
結果:Taiwan


Ltrim:刪字串左側的空白
範例:str=Ltrim("  Taiwan    ")
結果:Taiwan   


Rtrim:刪字串右側的空白
範例:str=Rtrim("  Taiwan    ")
結果:  Taiwan


Replace:將字串中的某字串,以另一字串代替。
範例:str=Replace("Taiwan","Tai"," Nan ")
結果:Nanwan


Instr:傳回子字串在字串中的第一次出現位置。
範例:strLen=Instr("ABCabc","a")
結果:1


Space:產生指定個數空白。
範例:Space(10)
結果:10個空白


String:產生指定個數的字元。
範例:str=String(5,"$")
結果:$$$$$


範例:str=String(4,66)
結果:BBBB
 
StrReverse:將字串前後反轉。
範例:str=StrReverse(" Taiwan ")
結果:nawiaT


Split:字串分割
範例:str=Split("Taiwan","T")
結果:
str(0)="T"
str(1)="aiwan"


StrComp:字串比較
範例:
str1=StrComp("Taiwan","Tai")
str2=StrComp("Taiwan","wan")
str3=StrComp("Taiwan","Taiwan")
結果:
str1=1
str2=-1
str3=0

VBA 基本語法



EXCEL常用的物件

Workbook 活頁簿
Workbooks 活頁簿集合
Workbooks("filename") 檔名為filename的活頁簿
ActiveWorkbook 正在作用中的活頁簿
Sheets 活頁簿中所有工作表
Sheets(n) 活頁簿中第n張工作表
Worksheet 工作表
Worksheets 所有工作表(包括圖表)
Worksheets("sheet") 指表名為sheet工作表
ActiveSheet 正在作用中的工作表
Columns("c1:c2") c1至c2欄
   (其中c1,c2為A~Z或AA~XFD等欄名)
Rows("r1:r2") r1至r2列
   (其中r1,r2為1~1048576等列名
Range("x1:x2") x1至x2間的儲存格
   (其中x1,x2為儲存格位址名稱)
cells(i,j) 儲存格(第i列、第j行)
ActiveCell 目前的儲存格
Selection 目前所選取的物件

範例:
Workbooks("Book1").Sheets("Sheet1").Range("A1:D5").Font.Bold = True
Worksheets("Sheet1").Cells.ClearContents
Worksheets("Sheet1").Rows(1).Font.Bold = True
Range("1:1,3:3,8:8")
Worksheets("Sheet1").Cells(6, 1).Value = 10
Worksheets("Sheet1").[A1:B5].ClearContents
ActiveCell.Offset(1, 3).Font.Underline = xlDouble


活頁簿常用屬性

ActiveWorkBook.Name 目前活頁簿的名稱
ActiveWorkBook.Save 儲存目前的活頁簿
ActiveWorkBook.SaveAs Filename := "filename" 另儲新檔
WorkBooks.Add 新增活頁簿
WorkBooks(i).Close [SaveChange, Filename, RouteWorkbook] 關閉指定的第i個活頁簿
SaveChange := True 改變儲存
SaveChange := False 不會改變儲存
SaveChange省略時,會出現對話方塊
filename := "檔名"
WorkBooks.Open "filename" 開啟一個活頁簿
Application.Windows 所有活頁簿視窗
WorkBooks.Count 活頁簿的數量
WorkBooks.Item(Index) 傳回單一活頁簿,由索引值指定


工作表常用屬性

Worksheets.Add [Before, After, Count, Type] 新增工作表
Before := Worksheets(n) 出現於某工作表之前
After := Worksheets(n) 出現於某工作表之後
Count := n 新增工作表數量
Type := xlWorksheet (工作表) 或 xlChart (圖表)
WorkSheets.Name 工作表名稱
WorkSheets("Sheet1").Activate 
    設定工作表為目前作用的功作表


儲存格常用屬性

Rows.RowHeight 指定範圍內的所有列高
Columns.ColumnsWidth:指定範圍內的所欄寬
expression.NumberFormatLocal 以本地的數字格式
Range.CurrentRegion 目前區域
   是指以任意空白列及空白欄的組合為邊界的範圍

範例:
Worksheets("Sheet1").Activate
ActiveCell.CurrentRegion.Select
expression.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo) 

以參照的方式 
RowAbsolute 為True,則用列的絕對位址 
ColumnAbsolute 為True,則用欄的絕對位址 
ReferenceStyle 預設值為xlA1,
    如為xlR1C1則為R1C1的表達方式
expression.count 傳回範圍的數量
   (可以是欄數、列數或儲存格數量) 
expression.Item(RowIndex, ColumnIndex) 
    代表相對於指定之範圍某個位移距離的範圍。 
expression.value 傳回或設定物件的值 
expression.Formula 傳回或設定物件的公式,
    代表 A1 樣式註解以及巨集語言中的物件公式。

範例:
Worksheets("Sheet1").Range("A1").Formula = "=$A$4+$A$10"
expression.FormulaR1C1 傳回或設定物件的公式,
    並以巨集語言中的 R1C1 樣式標記法表示

範例:
Worksheets("Sheet1").Range("B1").FormulaR1C1 = "=SQRT(R1C1)"
expression.Text 傳回或設定物件的文字

範例:
   Set c = Worksheets("Sheet1").Range("B14")
   c.Value = 1198.3
   c.NumberFormat = "$#,##0_);($#,##0)"
   MsgBox c.Value
   MsgBox c.Text

常用方法: 
Range.Select方法/Selection屬性 
    設定目前選取的範圍/使用目前所選取的範圍

範例:
Sub Macro1()
    Sheets("Sheet1").Select
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "Name"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Address"
    Range("A1:B1").Select
    Selection.Font.Bold = True
End Sub

expression.Copy 將目前所選取的物件復製至剪貼簿 
expression.Cut 將目前所選取的物件剪下 
expression.Delete 將目前所選取的物件刪除 
expression.Paste 將剪貼簿的內容貼上

範例:
Sub CopyRow()
    Worksheets("Sheet1").Rows(1).Copy
    Worksheets("Sheet2").Select
    Worksheets("Sheet2").Rows(1).Select
    Worksheets("Sheet2").Paste
End Sub

expression.RasteSpecial(Paste,Operation, SkipBlanks, Transpose)

範例:
With Worksheets("Sheet1")
    .Range("C1:C5").Copy
    .Range("D1:D5").PasteSpecial _
        Operation:=xlPasteSpecialOperationAdd
End With

Range.Activate 目前的儲存格 
Range.Clear 清除資料 
Range.ClearContents 清除資料內容 
Range.ClearFormats 清除資料格式 
Range.ClearComments 清除註解 
expression.AutoFit:自動調整列高和欄寬 
Range.FillDown、Range.FillUp、Range.FillLeft、Range.FillRight 填滿 
Range.Offset (RowOffset, ColumnOffset)  指定區域的位移列與行

範例:
Sub MoveActive()
    Worksheets("Sheet1").Activate
    Range("A1:D10").Select
    ActiveCell.Value = "Monthly Totals"
    ActiveCell.Offset(0, 1).Activate
End Sub

程式語法: 

Dim 陳述式(變數) 
Dim varname [ As [New] type] 
type 包括 Byte、Boolean、Integer、Long、Single、Double、Date、String、Object等

Set 陳述式(物件) 
Set objectvar = {[New] objectexpression | Nothing} 

例:Set RangeA = Range("A1:B2")

範例:
Sub Random()
    Dim myRange As Range
    Set myRange = Worksheets("Sheet1").Range("A1:D5")
    myRange.Formula = "=RAND()"
    myRange.Font.Bold = True
End Sub

With 多種屬性設定 
With 物件
.屬性1 = 設定值
.屬性2 = 設定值
.... End With

範例:
Sub AddNew()
Set NewBook = Workbooks.Add
    With NewBook
        .Title = "All Sales"
        .Subject = "Sales"
        .SaveAs Filename:="Allsales.xls"
    End With
End Sub

Array 陣列 
Array(Range1, Range2, ....)

範例:
Sub Several()
    Worksheets(Array("Sheet1", "Sheet2", "Sheet4")).Select
End Sub

InputBox 函數 
InputBox("文字說明",[,title][,default][,xpos][,ypos][,helpfile, context])

MsgBox 函數 
MsgBox "文字說明"

Union 將多個範圍合併成單一Range物件 
Union(Range1, Range2, ...)

範例:
Sub MultipleRange()
    Dim r1, r2, myMultipleRange As Range
    Set r1 = Sheets("Sheet1").Range("A1:B2")
    Set r2 = Sheets("Sheet1").Range("C3:D4")
    Set myMultipleRange = Union(r1, r2)
    myMultipleRange.Font.Bold = True
End Sub

For... Next 陳述式 
For counter = start to end [ step stepvalue]
[statements]
[Exit For]
[statements]
Next [counter]

範例:
Sub CycleThrough()
    Dim Counter As Integer
    For Counter = 1 To 20
        Worksheets("Sheet1").Cells(Counter, 3).Value = Counter
    Next Counter
End Sub

For Each... Next 陳述式 
For Each element In group 
[statements]
[Exit For]
[statements]
Next [element]

範例:
Sub ApplyColor()
    Const Limit As Integer = 25
    For Each c In Range("MyRange")
        If c.Value > Limit Then
            c.Interior.ColorIndex = 27
        End If
    Next c
End Sub

Do ... Loop 陳述式 
Do [{While | Until} condition]
[statements]
[Exit Do]
[statements]
Loop



Do
[statements]
[Exit Do]
[statements]
Loop [{While | Until} condition]
If ... Then ... Else ... 陳述式 
If condition Then [statements][Else elsestatements]



If condition Then
[statements]
[ElseIf condition-n Then
[elseifstatements]...
[Else
[elsestatements]]
End If

2020年1月28日 星期二

下載網頁影片

1. 開啟Google Chrome或是Chromium核心的Edge,連到你想要下載的影片頁面;影片預設會自動播放,這時候要按暫停。

2. 在影片旁邊空白的地方按一下滑鼠右鍵,點選下拉選單中的「檢查」

3. 這時Chrome右邊會出現網頁檢查選項,切換至「Network」標籤,然後按下鍵盤上的「F5」鍵重新刷新網頁。

4. 按了鍵盤上的「F5」之後,下方就會跑出一堆數據;仔細尋找「Type」形式為「media」的那一行,然後在那一行按兩下滑鼠左鍵。

5. 在「media」那行按兩下滑鼠左鍵後,影片就會以新的分頁開出;在影片旁邊空白的地方按一下滑鼠右鍵,點選下拉選單中的「另存新檔」,指定你想儲存的位置。

6. 如果使用Chrome的話左下方會突然出現一個警告,寫著「這個檔案並不安全,因此遭到Chrome封鎖」;別緊張,這只是例行性警告,先按一下右邊「全部顯示」

7. 按一下「保留不安全的檔案」

8. 再次跟你確認是否真的要保留檔案,勇敢地給他按「保留」就對了,之後影片檔就會被下載回來。

2019年5月26日 星期日

一目均衡表

一目均衡表指標
是由日本人 一目山人在1940年代發明。

K線如果長期處於 雲帶上方,雲帶具有支撐作用
當K線與雲帶接觸,表示指數回測支撐
如果撐住了,指數將在多頭排列的趨勢下繼續創新高。
直到K棒跌破雲帶,就表示支撐失敗,波段將可能反轉。
反之,K線如果長線處於雲帶下,就會面臨壓力
順著空頭排列,履創新低。

一目均衡表由每日的K線(價格線),
5條(快慢遲AB)移動線及1個阻抗帶(雲)所構成。
解讀其間關係可瞭解市場的強弱,可得出買賣信號。

一目均衡圖由短中長三個 (x,y,z) 時間參數,
計算五個指標值組成如下:

短軸快線,(轉換線) =(x期間最高高點 + x期間最低低點) / 2 
中軸慢線,(基準線) = (y期間最高高點 + y期間最低低點) / 2 
遲行線,(遲行線) = 今天的收盤價格,畫在過去 y 期處 
先行指標A, (先行帶A)= (轉換線 + 基準線) / 2,畫在未來 y 期處
先行指標B, (先行帶B)= (最高高點 + 最低低點) / 2,取過去 z 期間,畫在未來 y 期處
Kumo 是指雲(阻抗帶)= Senkou Span A 和 Senkou Span B 之間的空間。 

【參數】通常以(9, 26, 52)為短中長期的值:
 轉換線 = 短軸快線 = (9日最高+9日低)/2。
 基準線 = 中軸慢線 = (26日最高+26日最低)/2。
 遲行線 = 今日收盤價往(過去)前市平移一個中線周期(26日);當天價格與26天前的乖離率。
先行指標A = 先行帶A = (短軸快線+中軸慢線)/2,
畫在往(未來)後市挪移一個中線周期的位置。
先行指標B = 先行帶B = (52 日最高+52日最低)/2,
畫在往(未來)後市挪移一個一長線周期的位置。
雲帶(阻抗帶)= 先行指標A與先行指標B之間的空間。

1、買入信號:   
價格線位於雲的上方;
價格線在基準線之上推移(基準線成為下降支撐);
轉換線在基準線的上方推移(超強勢的情況下,價格線在轉換線上方推移);
遲行線Chinkou向上越過價格線。

2、賣出信號:   
價格線在雲的下方;
價格線在基準線的下方推移(反彈只到轉換線的位置,難以反彈到基準線);
轉換線在基準線的下方推移(降勢明顯的情況下,價格線在轉換線的下方推移);
遲行線Chinkou向下跌破價格線。

3、調整期
A、由上升轉為下降的調整:
價格線開始由上方進入雲帶;
價格線下穿基準線;
轉換線在基準線之下停留;
遲行線開始下穿價格線。
B、由下降轉為上升的調整:   
價格線開始站在基準線的上方;
轉換線上穿基準線;
遲行線Chinkou上穿價格線;
價格線由下方進入雲帶,最終上穿雲帶;
遲行線Chinkou穿出雲的上方。

4、一目均衡表的其它特徵
市場遠離雲帶表示趨勢走強,不易觸及雲的邊線;
穿透轉換線時,意味著可能出現調整;
始終未穿透基準線的市場,一旦穿透時,意味較大調整可能;
價格在基準線下方,為弱勢;上方為強勢。


【基準線】
中期屢創新高或低點迭升,則基準線走揚;
中期屢創新低或高點跌降,則基準線走低。
基準線線往上,為買進信號;
基準線由往下,為賣出信號。
價格在基準線上面,為多頭趨勢;
價格線和基準線交叉,表示趨勢反轉。

【轉換線】
價格在基準線下方,為弱勢;上方為強勢。
價格從低下穿越基準線時,走勢將轉為上升,反之轉為下降走勢。
看轉換線的同時,一定要參考基準線。
轉換線若往上或往下,代表市場趨勢往上往下。
當轉換線往水平方向移動時,表是明市場進入盤整。
轉換線和基準線用來判斷是有趨勢的市場還是振盪市場。
如果這兩個線之一橫著在走,我們就可以判斷是振盪市場,不宜交易。
轉換線被用來作為反轉線來判斷趨勢。
轉換線和基準線交叉構成買/賣訊號
轉換線向上穿過基準線- 買進訊號。
轉換線向下穿過基準線- 賣出訊號。

【雲帶】
中長期上升趨勢時,價位上穿雲帶是必須條件;
中長期下降趨勢時,價位下穿雲帶是必須條件。
留意先行線A與先行線B之間交叉的地方。
雲帶是由兩條線形成的:先行線A和先行線B。
這兩條線相交叉的地方,叫“交叉點”,這是雲帶的另一個參考點。
價格位於雲彩之上:上升趨勢
價格位於雲彩之下:下跌趨勢
價格位於雲彩內部: 橫盤趨勢
當價格在經過雲帶交叉點時,一般來說,市場會出現有較大的波動。
雲帶變薄的地方,說明買賣力量趨於均衡,市場易出現劇烈波動。

【遲行線】
遲行線應運用在長期趨勢的判斷上。
遲行線為一目均衡表的最重要的部分。
當遲行線上穿價格線是買入信號,遲行線下穿價格線是賣出信號。

價格在雲上,先行帶A是第一支撐,第二條先行帶B是第二相對支撐
價格在雲下,先行帶B是第一阻力,第二條先行帶B是第二相對阻力
價格在先行帶雲間,我們不在雲內交易。
先行帶的上下軌就是支撐和阻立。


2019年3月30日 星期六

使用LINE Notify做即時播報

使用LINE Notify個人存取權杖
不須登錄網站服務,直接設定通知。
我們的DDE已經把連接相關指令都寫入VBA
只需要用你的 LINE 帳號登入
就可以完成群組或個人的播放

1、首先 進入LINE Notify首頁 登入你的帳號
https://notify-bot.line.me/zh_TW/

2、點選 個人頁面

3、點選發行權杖

4、選鑿播報目的群組  輸入一個播報名稱

5、接著你就可以得到一組權杖編碼 
請按複製儲存下來就可離開頁面

6、最後 你只要將這組權杖編碼 貼到DDE裡就完成了
至於播報範圍/方式/型態 上課時再做說明......