Board logo

標題: 製值之後的下面儲存格皆為"" [打印本頁]

作者: myleoyes    時間: 2011-2-12 22:12     標題: 製值之後的下面儲存格皆為""

各位前輩你們好!
         前輩!問題如附檔說明
         請知道的前輩,不吝賜教謝謝再三!!
作者: hugh0620    時間: 2011-2-14 10:30

回復 1# myleoyes


     試試下述程式碼~ 應該可以符合你的需求
   Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      
      Select Case Target.Column      'Target.Column 為你選擇的欄位,因J欄位為第10欄,因此CASE 僅寫10
      Case 10
          For x = 3 To Target.Row - 1 'Target.Row:為你選擇的J欄位第幾列
              J = J + 1
              Cells(x, 7) = 11 * J    '每增一列增加11
          Next
          Target.Offset(0, -3) = Target(1, 1)   'Target.Offset(0, -3):為你選擇J欄位儲存格 往左移3欄的位置帶入Target(1, 1)(你選擇J欄位儲存格)
          For c = Target.Row + 1 To Target.End(xlDown).Row  '清除 計算為你選擇J欄位儲存格數目
              Cells(c, 7) = ""
          Next
      End Select
   
End Sub
作者: myleoyes    時間: 2011-2-14 21:19

回復 2# hugh0620
hugh0620 前輩你好!
      前輩謝謝!!果然厲害喔!這段程式
         Cells(x, 7) = 11 * J    '每增一列增加11
         小第不解為何每增一列要用11來加呢?
         還有以範例來說32列是最後一列
         所以當按J32時因為後面是""所以程式
         無法停止  Next....
         另一方面是當J欄的儲存格=""時是
         不能執行程式前輩忘記考慮到
         原程式有說( If Target(1) <> "" Then nn )
         不好意思請再辛苦修改看看,謝謝再三!!
作者: Hsieh    時間: 2011-2-14 22:35

回復 3# myleoyes
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.    If Not Intersect(Target(1), Range("J3:J152")) Is Nothing And Target(1) <> "" Then
  3.    Target.Offset(, -3) = Target.Value
  4.    Range(Target(1).Offset(1, -3), Target(1).Offset(1, -3).End(xlDown)) = ""
  5.    End If
  6. End Sub
複製代碼

作者: hugh0620    時間: 2011-2-15 08:32

本帖最後由 hugh0620 於 2011-2-15 09:38 編輯

回復 3# myleoyes


        Q. Cells(x, 7) = 11 * J    '每增一列增加11,小第不解為何每增一列要用11來加呢?
         A. 因為你給的圖不就是每列都加11,除非你需要的是其他的東西??
        Q. 還有以範例來說32列是最後一列,所以當按J32時因為後面是""所以程式,無法停止  Next....
           Select Case Target.Column      
             Case 10
             For x = 3 To Target.Row - 1
              J = J + 1
                   Cells(x, 7) = 11 * J   
             Next
          Target.Offset(0, -3) = Target(1, 1)  
          Range(Target(1).Offset(1, -3), Target(1).Offset(1, -3).End(xlDown)) = ""  '<----新增這行,偷用Hsieh大大的東西^.^
         '現在知道可以怎麼用~ 多學會一招~...
          End Select
        End Sub
     Q.   另一方面是當J欄的儲存格=""時,是不能執行程式前輩忘記考慮到,原程式有說( If Target(1) <> "" Then nn )
           這個問題我看不懂耶~  不知道你J=""時, 不能執行的結果是怎麼樣??
作者: myleoyes    時間: 2011-2-15 21:11

回復 4# Hsieh
hsieh前輩你好!
       偶像前輩!謝謝!!程式精簡有力贊!贊!
       辛苦囉!謝謝再三!!
作者: myleoyes    時間: 2011-2-15 21:13

回復 5# hugh0620
hugh0620 前輩你好!
      前輩謝謝!!G欄的數字是隨意下拉的結果
         造成你的誤解可見前輩觀察入微實在是真殆勢!
         當J欄的儲存格=""時,執行程式是無意義的
         如偶像前輩程式裡的這一段相同的意思
         If..... And Target(1) <> "" Then
         是小弟不會表達不好意思好像猜燈謎喔!殆勢!
         辛苦囉!謝謝再三!!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)