返回列表 上一主題 發帖

重新編號

回復 10# hugh0620
hugh0620 前輩你好!
      前輩謝謝!!程式適用非常感激還幫小弟
         詳細解說這是小弟最迫切需要的
         每當有前輩幫小弟解答時,都很想告訴他們
         可否幫我加註說明以便了解程式在說什麼?
         實在難以再開口要求...,造成今日學習感到
         很無力往後請多多指導這種最笨的方法謝謝再三!!

TOP

回復 8# oobird
oobird前輩你好!
      前輩!謝謝!小弟為了省去一些
      落落長的解說,有時也會詞不達意
      所以尋找類似程式來作為解說
      原本認為這樣比較容易讓指導前輩
      了解需求,以本範例為例原程式的內容
      這個Resize(, 15)不是告訴我們程式是
      以size大小來作為依據15就是大小的值
      B153=編號從C欄開始都是數字分別是9,14,20
      3組號,所以按鈕後變1,2,3等3組號應該是
      比言語容易了解重新編號的目的
      卻讓各位前輩更難了解殆勢!!真是始料未及
      真的謝謝你讓小弟發現錯誤所在
      以免增加往後學習的挫折感真是謝謝再三!!

TOP

回復 10# hugh0620
hsieh前輩你好!
       偶像前輩!謝謝!!你的教誨小弟謹記在心
       感謝你多年來總是秉持有教無類的精神
       教導我這位遲鈍學生...小弟感激在心謝謝再三!!!
       小弟另有一問題再請教,各位前輩!
         問題如附檔說明
        Sub 左移()
          If ActiveWindow.ScrollColumn > 2445 Then
          ActiveWindow.ScrollColumn = 2
          Else
          ActiveWindow.ScrollColumn = ActiveWindow.ScrollColumn + 15
          End If
       End Sub
       請知道的前輩,不吝賜教謝謝再三!!

Leov41.rar (15.22 KB)

TOP

本帖最後由 hugh0620 於 2011-1-20 12:17 編輯

回復 13# myleoyes


    HI~ 我只會用我現在學會的方式來幫你處理 (有測試過,可直接copy下面的程式碼)
   而我處理的方式是用 select case 來做~  我也有新增一個a1的執來幫我處理(主要是我還不會寫把資料暫存在變數中,所以需要一個欄位)
    這種處理方式在少數量上還ok~若是多筆數據的話~ 你可能就要加很多case~要寫很久~
    要短且優的程式 還是要看大大的
   
   Sub 左移()
     If Range("a1") = "" Then    '<----a1是用來處理選擇第幾個case
        Range("a1") = 1
     End If
     w = Range("a1")               
     Select Case w
     Case 1   '<----按第一次是第一個15筆的資料
     ActiveWindow.ScrollColumn = ActiveWindow.ScrollColumn
     Range("a1") = Range("a1") + 1
     Case 2 '<----按第二次是第二個15筆的資料
     ActiveWindow.ScrollColumn = ActiveWindow.ScrollColumn + 15
     Range("a1") = Range("a1") + 1
     Case 3  '<----按第三次是第三個15筆的資料
     ActiveWindow.ScrollColumn = ActiveWindow.ScrollColumn + 15
     Range("a1") = Range("a1") + 1
     Case 4 '<----按第四次 因為後面沒有資料,所以跳回到一開始的地方
     ActiveWindow.ScrollColumn = 3
     Range("a1") = ""
     End Select
End Sub
學習才能提升自己

TOP

回復 14# hugh0620
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.      Select Case Target(1).Address(0, 0)
  3.         Case "B1"
  4.             ActiveWindow.ScrollColumn = 1
  5.         Case "B2"
  6.         k = IIf(ActiveWindow.ScrollColumn + 15 > 255, -(ActiveWindow.ScrollColumn) + 3, 15)
  7.             ActiveWindow.ScrollColumn = ActiveWindow.ScrollColumn + k
  8.             Range("A2").Select
  9.         End Select
  10. End Sub
複製代碼
學海無涯_不恥下問

TOP

本帖最後由 hugh0620 於 2011-1-20 14:10 編輯

回復 15# Hsieh
  
     呵呵~  還是大大厲害~
     我也試著把大大的程式碼做了一個小小的修改~
   這樣就只要選擇"B2"這個儲存格~ 不用再點選"B1"    (有時USER會不知道要去按"B1",乾脆就把USER當EXCEL笨蛋,只要按一個地方就好)

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     Select Case Target(1).Address(0, 0)
        'Case "B1"                                                                                        '取消
        '    ActiveWindow.ScrollColumn = 1                                               '取消
        Case "B2"
        'k = IIf(ActiveWindow.ScrollColumn + 15 > 255, -(ActiveWindow.ScrollColumn) + 3, 15)  '大大為了防止欄大於255,嚴謹的寫法
        k=15                                                                                                  '若已經確定不可能超過255個欄位,其實只要令k=15每次增加15欄,也是可以的
        If Target.Offset(, ActiveWindow.ScrollColumn + k ) = "" Then           '新增 如果下面沒有資料就跳回到最前面
           ActiveWindow.ScrollColumn = 3                                                '新增
           Range("A2").Select                                                                   '新增
        Else                                                                                               '新增
            ActiveWindow.ScrollColumn = ActiveWindow.ScrollColumn + k
            Range("A2").Select
        End If                                                                                                 '新增
        End Select
End Sub
學習才能提升自己

TOP

回復 16# hugh0620
hugh0620 前輩你好!
      前輩謝謝!!你還是如此詳細解說
         小弟在你的指導下應該比較容易
         了解程式基礎原理,不過這個左移
         真的遇到大資料可真的累死囉!!因為小弟目前的資料
         已經存到RN囉!還再增加之中哈哈!!
         往後請多多指導這種最笨的方法謝謝再三!!

TOP

回復 15# Hsieh
hsieh前輩你好!
       偶像前輩!謝謝!!你的程式真的沒話說除了謝謝還是謝謝再三!!

TOP

回復 16# hugh0620
在已使用範圍內循環
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2.      Select Case Target(1).Address(0, 0)
  3.         Case "B1"
  4.             ActiveWindow.ScrollColumn = 1
  5.         Case "B2"
  6.         k = IIf(ActiveWindow.ScrollColumn + 15 > UsedRange.Columns.Count, -(ActiveWindow.ScrollColumn) + 3, 15)
  7.             ActiveWindow.ScrollColumn = ActiveWindow.ScrollColumn + k
  8.             Range("A2").Select
  9.         End Select
  10. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 1# myleoyes
  1. Sub changeindex()
  2. Dim mydic As Object
  3. Dim mycell As range
  4. Dim i As Integer

  5. Set mydic = CreateObject("scripting.dictionary")

  6. For Each mycell In range([c153], [c153].End(xlToRight))

  7. If mydic.exists(mycell.Value) Then
  8. mycell.Value = mydic(mycell.Value)
  9. Else
  10. i = i + 1
  11. mydic(mycell.Value) = i
  12. mycell.Value = mydic(mycell.Value)
  13. End If
  14. Next

  15. Set mydic = Nothing

  16. End Sub
複製代碼
現在要理解發問者的意思,比寫程式更困難
80 字節以內
不支持自定義 Discuz! 代碼

TOP

        靜思自在 : 我們最大的敵人不是別人.可能是自己。
返回列表 上一主題