標題:
徵求高手幫我解決一下這個問題
[打印本頁]
作者:
藍天麗池
時間:
2015-12-23 14:41
標題:
徵求高手幫我解決一下這個問題
Sub RecordPrice()
Dim WR As Long
Dim I As Long
WR = Range("A1").End(xlDown).Row + 1
[A2] = TimeValue(Now)
For I = 1 To 42
Cells(WR, I) = Cells(2, I)
Next 'I
With ActiveWindow
If Intersect(Cells(WR, "B"), .VisibleRange) Is Nothing Then .SmallScroll 1
End With
End Sub
以上程式碼如果我要將A1粗體的數字往下寫,Cells(WR, I) = Cells(2, I)這個地方要怎麼改??
目前往下寫粗體就會消失了
作者:
藍天麗池
時間:
2015-12-27 16:14
本帖最後由 藍天麗池 於 2015-12-27 16:23 編輯
[attach]22991[/attach]
回復
1#
藍天麗池
1.目前適用條件格式化的方式處理,但是原先的程式碼往下寫的時候只會寫入值,可以改成往下寫不要以條件格式化的方式出現 ,單純就將字體變粗就好(就像我們將一個儲存格內的字體變粗這樣),這樣可以嗎??
2. 另外,我下面設定的自動捲動,可以改成開關的方式嗎(就是可以用熱鍵開關的方式)??
謝謝G大,最近上來論壇的人好少,還以為連G大都沒再上來了呢
作者:
c_c_lai
時間:
2015-12-28 08:08
回復
1#
藍天麗池
提供參考:
.[A3].Resize(1, 8).Font.FontStyle = "粗體"
複製代碼
作者:
藍天麗池
時間:
2015-12-28 13:55
回復
3#
c_c_lai
請問C大這個程式碼要加在哪裡啊??
作者:
c_c_lai
時間:
2015-12-28 19:22
回復
4#
藍天麗池
Sub RecordPrice()
Dim WR As Long
' ActiveWindow.ScrollRow = WR - 5 ' 只顯示最新幾筆資料
Application.ScreenUpdating = False
With Sheets("RTD")
If .Range("H2") < 1 Then Exit Sub
WR = Range("A1").End(xlDown).Row + 1
If (WR = 3) Or _
(.Range("G" & WR - 1) <> .Range("G2")) Then ' 總量有異動時才記錄
.Rows(3).Insert
.[A3].Resize(1, 8) = .[A2].Resize(1, 8).Value
.[A3].Resize(1, 8).Font.FontStyle = "粗體"
End If
End With
Application.ScreenUpdating = True
End Sub
複製代碼
作者:
藍天麗池
時間:
2015-12-28 20:17
回復
5#
c_c_lai
出現語法錯誤在以下程式碼
If (WR = 3) Or _
(.Range("G" & WR - 1) <> .Range("G2")) Then ' 總量有異動時才記錄
另外請教一下C大,我目前在G2有設定格式條件G2>9才變粗體(之後可能還會設定別的條件在第2欄的儲存格),請教一下C大妳的程式碼事都讓所有的數字變粗體,還是只有第二欄變粗體往下寫才變粗體呢??
作者:
c_c_lai
時間:
2015-12-29 07:54
本帖最後由 c_c_lai 於 2015-12-29 08:03 編輯
回復
6#
藍天麗池
.
作者:
c_c_lai
時間:
2015-12-29 07:56
回復
6#
藍天麗池
If (WR = 3) Or _
(.Range("G" & WR - 1) <> .Range("G2")) Then ' 總量有異動時才記錄
複製代碼
與
If (WR = 3) Or _
(.Range("G" & WR - 1) <> .Range("G2")) Then ' 總量有異動時才記錄
複製代碼
是個完全不同的敘述,『_』接續的語句後面是不能有空行的,否則會是個「不合法的語法」。
另外你要哪個部位要顯示『粗體』,是你個人自行設定的。範例只是要告訴你設定的方法,
.[A3].Resize(1, 8).Font.FontStyle = "粗體" 是設定該行全為『粗體』,若你只要 G 欄設定為
『粗體』,則便應改成 .[G3].Font.FontStyle = "粗體"。隨你個人之應用。假設 G2 > 9 才變
為粗體,則更改成「 .[G3].Font.FontStyle = IIf(.[G2] > 9, "粗體", "標準")」即可。
作者:
藍天麗池
時間:
2015-12-29 10:28
回復
8#
c_c_lai
C大感謝你,另外再跟你請教一下,你目前寫的程式碼在G列變成全部的儲存格都有格式化條件了,可以改成只有G2去做判定,如果大於9往下寫入粗體就好,而不要連同格式化條件一起寫入,這樣可以嗎??
作者:
c_c_lai
時間:
2015-12-29 18:56
本帖最後由 c_c_lai 於 2015-12-29 19:00 編輯
回復
9#
藍天麗池
不好意思請問「同格式化條件」指的是甚麼?
能否說明一下,這樣我才知你要的是什麼。
最好有個例子畫葫一下,因為我還沒反應過來。
作者:
藍天麗池
時間:
2015-12-29 20:19
本帖最後由 藍天麗池 於 2015-12-29 20:25 編輯
回復
10#
c_c_lai
C大,我在2樓附的的檔案裡面你下載後打開G2那邊有設定格式化條件(像以下連結的東西),我希望往下寫的東西不要出現格式化條件,而單純的就字體變粗就好,這樣C大有比較好理解嗎??抱歉問得有點模糊
http://www.techbang.com/posts/9686-excel-formatting-set-conditions-focus-at-a-glance
[attach]23009[/attach][attach]23010[/attach]
作者:
c_c_lai
時間:
2015-12-29 20:38
回復
11#
藍天麗池
[attach]23011[/attach]
作者:
藍天麗池
時間:
2015-12-29 21:22
本帖最後由 藍天麗池 於 2015-12-29 21:36 編輯
[attach]23012[/attach]
回復
12#
c_c_lai
[attach]23013[/attach][attach]23014[/attach]
不是#12的那個東西,C大妳比較一下兩張圖,再看一下我#11所回的內容
C大左圖裡面的G3是有格式化條件的,但右圖H3是沒有的,我的意思是在往下寫的過程中由G2判斷,寫到G3.G4...一直往下寫都不要格式化條件裡面出現公式,像H3裡面一樣是沒有公式但變粗體,這樣可以嗎??
我指的公式不是儲存格內的,而是格式化條件裡面的
PS.我要的最終結果就是G3.G4...所有的G欄裡面都沒有格式化條件,但是裡面的數值大於9就變粗體
作者:
藍天麗池
時間:
2015-12-29 21:44
本帖最後由 藍天麗池 於 2015-12-29 21:53 編輯
回復
12#
c_c_lai
我的想法是程式碼裡面不能出現以下程式碼,因為我已經有在其他地方輸入公式判斷G2>9變粗體,是否只要改變寫入方式就可以了呢??但我不知道是否正確
.[G3].Font.FontStyle = IIf(.[G2] > 9, "粗體", "標準")
寫入方式改變指的是,如果這一秒A2~H2都是一般字體,那A3~H3就寫入一般字體,如果下一秒A2~F2為一般字體、G2.H2為粗體,那A4~F4就寫入一般字體、G2.H2則寫入粗體,以此類推,上面怎麼變下面就怎麼寫,而不是另外寫公式去判斷,這樣可以嗎??
作者:
藍天麗池
時間:
2015-12-29 22:23
回復
12#
c_c_lai
C大感謝我已經解決問題了,謝謝
作者:
藍天麗池
時間:
2015-12-29 22:41
回復
12#
c_c_lai
C大上面的問題我都解決了,但是還有一個小問題請教一下,如果我手動更改G2的值為什麼不會往下寫呢??
作者:
c_c_lai
時間:
2015-12-30 07:28
本帖最後由 c_c_lai 於 2015-12-30 07:32 編輯
回復
16#
藍天麗池
設定程序:
[attach]23016[/attach]
測試結果:
[attach]23017[/attach]
作者:
藍天麗池
時間:
2015-12-30 08:19
回復
17#
c_c_lai
可是我們的公式不是設定G2有變動就往下寫嗎??但是我一直更改G2的值,他只有第一次會往下寫,之後不管我怎麼更改就都不會往下寫了,這是為什麼呢??
作者:
c_c_lai
時間:
2015-12-30 08:55
回復
18#
藍天麗池
我終於了解你的意思了。
因為當初你的原始程式裡,有如下之條件:
(1)
If .Range("H2") < 1 Then Exit Sub ' 當 H2 值小於 1 時則不處理,直接逕行跳離。
(2)
WR = Range("A1").End(xlDown).Row + 1
If (WR = 3) Or (.Range("G" & WR - 1) <> .Range("G2")) Then ' 總量有異動時才記錄
當所有紀錄為空,亦或是 G2 欄值與 最後一筆的值 不等時才去寫入第三列 (Rows(3)) 之
資料。你檢查一下你資料錄最後一筆之 G 欄值為何,是否與 G2 欄值一致?
因為我不知你原先意圖為何,只能照舊寫入。 從 第三列的匯入 (.Rows(3).Insert) 方式來看,
依我個人的處理習慣,我是不會拿資料錄最底下(最後)一筆的記錄之值做比對,因為目前之
第三列的匯入值才是你最後之匯入值 (最新的匯入值)。所以經你一說我才明了你最後表達的意思。
應該是:
If (WR = 3) Or (.[G3] <> .[G2]) Then ' 總量有異動時才記錄
複製代碼
作者:
藍天麗池
時間:
2015-12-30 20:21
回復
19#
c_c_lai
C大謝謝你,大致上是沒問題了,如果我要改回以往的方式將最新的資料往下寫是不是只要把.Rows(3).Insert刪掉就好??
還是其他地方也要修改呢??
作者:
藍天麗池
時間:
2015-12-30 23:07
回復
19#
c_c_lai
C大如果G2>9我要改成紅色而且粗體這邊.[G3].Font.FontStyle = IIf(.[G2] > 9, "粗體", "標準")要怎麼改??
作者:
c_c_lai
時間:
2015-12-31 07:58
回復
21#
藍天麗池
Sub RecordPrice() ' 從第三行插入模式
Dim WR As Long
Application.ScreenUpdating = False
With Sheets("RTD")
If .Range("H2") < 1 Then Exit Sub
WR = Range("A1").End(xlDown).Row + 1
If (WR = 3) Or (.[G3] <> .[G2]) Then ' 總量有異動時才記錄
.Rows(3).Insert
.[A3].Resize(1, 8) = .[A2].Resize(1, 8).Value
.[G3].Font.FontStyle = IIf(.[G2] > 9, "粗體", "標準")
.[G3].Font.Color = IIf(.[G2] > 9, 255, 2)
End If
End With
Application.ScreenUpdating = True
End Sub
複製代碼
作者:
c_c_lai
時間:
2015-12-31 07:59
回復
20#
藍天麗池
Sub RecordPrice() ' 往下遞增模式
Dim WR As Long
Application.ScreenUpdating = False
With Sheets("RTD")
If .Range("H2") < 1 Then Exit Sub
WR = Range("A1").End(xlDown).Row + 1
If (WR = 3) Or (.Range("G" & WR - 1) <> .[G2]) Then ' 總量有異動時才記錄
.Range("A" & WR).Resize(1, 8) = .[A2].Resize(1, 8).Value
.Range("G" & WR).Font.FontStyle = IIf(.[G2] > 9, "粗體", "標準")
.Range("G" & WR).Font.Color = IIf(.[G2] > 9, 255, 2)
End If
End With
Application.ScreenUpdating = True
End Sub
複製代碼
作者:
藍天麗池
時間:
2015-12-31 08:43
回復
23#
c_c_lai
C大謝謝你,這陣子真是麻煩妳了,感謝
作者:
藍天麗池
時間:
2015-12-31 13:59
回復
23#
c_c_lai
紅色255,那其他顏色呢??例如藍色??
有顏色的對照表嗎??
作者:
c_c_lai
時間:
2015-12-31 15:26
本帖最後由 c_c_lai 於 2015-12-31 15:29 編輯
回復
25#
藍天麗池
參考看看
或者是
Colors
作者:
藍天麗池
時間:
2016-1-1 12:19
本帖最後由 藍天麗池 於 2016-1-1 12:32 編輯
回復
26#
c_c_lai
.Range("G" & WR).Font.Color = IIf(.[G2] > 9, 255, 2)可是這裡面沒有RGB(0,0,255)選項阿??
那要怎麼改呢??
是改成這樣嗎??.Range("G" & WR).Font.Color = IIf(.[G2] > 9, RGB(0,0,255), 2)
作者:
藍天麗池
時間:
2016-1-1 13:51
回復
26#
c_c_lai
.Range("G" & WR).Font.Color = IIf(.[G2] > 9, 255, 2)另外255後面的2又是甚麼意思呢??
作者:
c_c_lai
時間:
2016-1-1 13:54
本帖最後由 c_c_lai 於 2016-1-1 13:57 編輯
回復
27#
藍天麗池
以下四列,都是同義:
' 方式一
.Range("G" & WR).Font.Color = IIf(.[G2] > 9, 255, 2)
' 方式二
.Range("G" & WR).Font.Color = IIf(.[G2] > 9, 255, RGB(0, 0, 0))
' 方式三
.Range("G" & WR).Font.Color = IIf(.[G2] > 9, RGB(255, 0, 0), 2)
' 方式四
.Range("G" & WR).Font.Color = IIf(.[G2] > 9, RGB(255, 0, 0), RGB(0, 0, 0))
複製代碼
[attach]23026[/attach]
作者:
藍天麗池
時間:
2016-1-1 14:40
回復
29#
c_c_lai
那如果用方式一改成藍色呢??
作者:
c_c_lai
時間:
2016-1-1 17:04
回復
30#
藍天麗池
[attach]23027[/attach]
作者:
c_c_lai
時間:
2016-1-2 11:48
回復
30#
藍天麗池
為求方便,你也可以改用 ColorIndex 的用法。
請參考:
ColorIndex -- 56 Excel Colors [#colors56/#colorindex]
.Range("G" & WR).Font.ColorIndex = IIf(.[G2] > 9, 3, 1) ' Red, Black
' .Range("G" & WR).Font.ColorIndex = IIf(.[G2] > 9, 7, 5) ' Magenta, Blue
複製代碼
作者:
藍天麗池
時間:
2016-1-2 15:04
回復
32#
c_c_lai
C大我了解了,謝謝
作者:
藍天麗池
時間:
2016-1-26 14:20
回復
32#
c_c_lai
C大你好,又來請教您了,可以麻煩您有空幫我看看嗎??謝謝你
http://forum.twbts.com/viewthrea ... amp;extra=#pid86580
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)