Board logo

標題: [發問] 如何改寫此篇程式,謝謝。 [打印本頁]

作者: av8d    時間: 2018-1-8 13:20     標題: 如何改寫此篇程式,謝謝。

本帖最後由 av8d 於 2018-1-8 13:46 編輯

原先是使用這段是正常的(如下)
  1. Private Sub CommandButton1_Click()
  2.     If D10 < 1 Then
  3.         Rows("10").EntireRow.Hidden = True
  4.     End If
  5. End Sub
複製代碼
改寫後就不會動了(如下)
  1. Private Sub CommandButton1_Click()
  2.     For i = 10 To 38 Step 7
  3.         If D & "i" < 1 Then
  4.             Rows("i").EntireRow.Hidden = True
  5.         End If
  6.     Next
  7. End Sub
複製代碼
後來發現判斷式也有問題,無論D10有沒有小於1該列都會被隱藏。(原始檔如下)
[attach]28212[/attach]
------------------------------------------------------------------------------------------------------------
2018/1/8 13:45
問題一已解決,剩問題二。
作者: av8d    時間: 2018-1-8 13:52

回復 1# av8d

問題二已解
  1. Private Sub CommandButton1_Click()
  2.     For i = 10 To 38 Step 7
  3.         If Range("D" & i).Value < 1 Then
  4.             Rows(i).EntireRow.Hidden = True
  5.         End If
  6.     Next
  7. End Sub
複製代碼

作者: GBKEE    時間: 2018-1-8 21:37

本帖最後由 GBKEE 於 2018-1-8 21:40 編輯

回復 2# av8d
參考看看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim i As Integer, 輪值表(), x As Integer
  4.     Dim xDay As Date, xWeek()
  5. Xy:
  6.     On Error Resume Next
  7.     xDay = DateSerial(InputBox("輸入年份", , Year(Date)), 1, 1)
  8.     If Err > 0 Then
  9.         If MsgBox("年份???  : 重新輸入? ", vbOKCancel) = vbCancel Then
  10.             Exit Sub
  11.         Else
  12.             GoTo Xy
  13.         End If
  14.     End If
  15.     On Error GoTo 0
  16.     xWeek = Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六")
  17.     With Sheets("輪值人員表")
  18.         輪值表 = .Range("B1", .Range("B1").End(xlDown).Address).Value
  19.         輪值表 = Application.WorksheetFunction.Transpose(輪值表)
  20.     End With
  21.    
  22.     With Cells
  23.         .Clear
  24.         .Range("B1") = Year(xDay) & "年"
  25.         .Range("B2") = "輪值人員"
  26.         .HorizontalAlignment = xlCenter
  27.         .Font.Size = 22
  28.     End With
  29.     i = 1
  30.     Do
  31.         With Range("c" & i).Resize(, 7)
  32.             .Cells(1) = Month(xDay)
  33.             .Merge
  34.             .NumberFormatLocal = "0""月""""份"""
  35.             .Offset(1).Resize(, 7) = xWeek
  36.         End With
  37.         i = i + 2
  38.         Do
  39.             Cells(i, "C").Cells(1, Weekday(xDay, vbSunday)).Cells = Day(xDay)
  40.             With Cells(i, "B")
  41.                 If .Cells = "" Then
  42.                     x = Application.WorksheetFunction.WeekNum(xDay)
  43.                     If x < UBound(輪值表) Then
  44.                         .Cells = 輪值表(x)
  45.                     Else
  46.                         If x Mod UBound(輪值表) = 0 Then
  47.                             .Cells = 輪值表(1)
  48.                         Else
  49.                             .Cells = 輪值表(x Mod UBound(輪值表) + 1)
  50.                         End If
  51.                     End If
  52.                 End If
  53.             End With
  54.             If Cells(i, "B") = "" Then Application.WorksheetFunction.WeekNum (xDay)
  55.             If Weekday(xDay, vbSunday) = 7 And Month(xDay) = Month(xDay + 1) Then i = i + 1
  56.             xDay = xDay + 1
  57.         Loop Until Month(xDay) <> Month(xDay - 1)
  58.         i = i + 1
  59.     Loop Until Year(xDay) <> Year(xDay - 1)
  60. End Sub
複製代碼





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