Board logo

標題: 徵求高手幫我解決一下這個問題 [打印本頁]

作者: 藍天麗池    時間: 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# 藍天麗池
提供參考:
  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# 藍天麗池
  1. Sub RecordPrice()
  2.     Dim WR As Long

  3.     '  ActiveWindow.ScrollRow = WR - 5 '  只顯示最新幾筆資料
  4.     Application.ScreenUpdating = False

  5.     With Sheets("RTD")
  6.         If .Range("H2") < 1 Then Exit Sub

  7.         WR = Range("A1").End(xlDown).Row + 1
  8.         If (WR = 3) Or _
  9.                 (.Range("G" & WR - 1) <> .Range("G2")) Then  ' 總量有異動時才記錄
  10.             .Rows(3).Insert
  11.             .[A3].Resize(1, 8) = .[A2].Resize(1, 8).Value
  12.             .[A3].Resize(1, 8).Font.FontStyle = "粗體"
  13.         End If
  14.     End With

  15.     Application.ScreenUpdating = True
  16. 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# 藍天麗池
  1. If (WR = 3) Or _

  2.                  (.Range("G" & WR - 1) <> .Range("G2")) Then  ' 總量有異動時才記錄
複製代碼
  1. If (WR = 3) Or _
  2.                  (.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) 方式來看,
       依我個人的處理習慣,我是不會拿資料錄最底下(最後)一筆的記錄之值做比對,因為目前之
       第三列的匯入值才是你最後之匯入值 (最新的匯入值)。所以經你一說我才明了你最後表達的意思。
       應該是:
  1.         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# 藍天麗池
  1. Sub RecordPrice()      '  從第三行插入模式
  2.     Dim WR As Long

  3.     Application.ScreenUpdating = False

  4.     With Sheets("RTD")
  5.         If .Range("H2") < 1 Then Exit Sub

  6.         WR = Range("A1").End(xlDown).Row + 1

  7.         If (WR = 3) Or (.[G3] <> .[G2]) Then   ' 總量有異動時才記錄
  8.             .Rows(3).Insert
  9.             .[A3].Resize(1, 8) = .[A2].Resize(1, 8).Value
  10.             .[G3].Font.FontStyle = IIf(.[G2] > 9, "粗體", "標準")
  11.             .[G3].Font.Color = IIf(.[G2] > 9, 255, 2)
  12.         End If
  13.     End With

  14.     Application.ScreenUpdating = True
  15. End Sub
複製代碼

作者: c_c_lai    時間: 2015-12-31 07:59

回復 20# 藍天麗池
  1. Sub RecordPrice()      '  往下遞增模式
  2.     Dim WR As Long

  3.     Application.ScreenUpdating = False

  4.     With Sheets("RTD")
  5.         If .Range("H2") < 1 Then Exit Sub

  6.         WR = Range("A1").End(xlDown).Row + 1

  7.         If (WR = 3) Or (.Range("G" & WR - 1) <> .[G2]) Then  ' 總量有異動時才記錄
  8.             .Range("A" & WR).Resize(1, 8) = .[A2].Resize(1, 8).Value
  9.             .Range("G" & WR).Font.FontStyle = IIf(.[G2] > 9, "粗體", "標準")
  10.             .Range("G" & WR).Font.Color = IIf(.[G2] > 9, 255, 2)
  11.         End If
  12.     End With

  13.     Application.ScreenUpdating = True
  14. 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# 藍天麗池
以下四列,都是同義:
  1.         '  方式一
  2.         .Range("G" & WR).Font.Color = IIf(.[G2] > 9, 255, 2)
  3.         '  方式二
  4.         .Range("G" & WR).Font.Color = IIf(.[G2] > 9, 255, RGB(0, 0, 0))
  5.         '  方式三
  6.         .Range("G" & WR).Font.Color = IIf(.[G2] > 9, RGB(255, 0, 0), 2)
  7.         '  方式四
  8.         .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]
  1.    .Range("G" & WR).Font.ColorIndex = IIf(.[G2] > 9, 3, 1)      '  Red, Black
  2.    '  .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/)