返回列表 上一主題 發帖

[發問] 請問各位大大!

[發問] 請問各位大大!

j = InputBox("輸入數量", , 0)
    Sheets("原始檔").Select
    Range("B5 & ":D" & j + 4).Select

請問各位大大
小弟想將程式碼修改成

輸入不同數量後
程式碼能將所需要的欄位選擇起來
且選擇過的會從下一筆開始選擇

例如
假設原始檔從第5列開始有100列資料
一開始的InputBox輸入10   程式碼會抓B5到D14
下一個InputBox輸入7      程式碼則抓B15到D21
一直抓到原始檔的100列資料抓完

請問各位大大
小弟該如何修改?
感謝!

回復 1# koiiven
  1. Sub nn()
  2. Dim j&
  3. Do Until s >= 100
  4. j = InputBox("輸入數量", , 0)
  5.     Range("B5").Offset(s, 0).Resize(j, 3).Select
  6. s = s + j
  7. Loop
  8. End Sub
複製代碼
學海無涯_不恥下問

TOP

執行OK
感謝大大幫忙

小弟想請問Range的問題
  1. Sub Macro2()
  2. Dim j&
  3. Dim k&
  4. k = InputBox("總數量", , 0)

  5. Do Until s >= k
  6. i = InputBox("輸入名稱", , 0)
  7. j = InputBox("輸入數量", , 0)
  8.    
  9.     Sheets("空白表格").Select
  10.     Sheets("空白表格").Copy After:=Sheets(2)
  11.     Sheets(3).Select
  12.     Sheets(3).Name = i
  13.    
  14.     Sheets("原始檔").Select
  15.     Range("B5").Offset(s, 0).Resize(j, 3).Select
  16. s = s + j
  17.     Selection.Copy
  18.     Sheets(3).Select
  19.     Range("C7").Select
  20.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  21.         :=False, Transpose:=False
  22.    
  23.     Sheets("原始檔").Select
  24.     Range("H5").Offset(s, 0).Resize(j, 1).Select   '會選擇H8到H10   該如何修改才能選擇H5到H7呢?
  25. s = s + j
  26.     Selection.Copy
  27.     Sheets(3).Select
  28.     Range("F7").Select
  29.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  30.         :=False, Transpose:=False

  31. Loop

  32. End Sub
複製代碼
假設j輸入3
程式會選擇(B5:D7)的範圍

但到了H5時
則直接從H8開始選擇

如果想一樣從H5開始選擇
請問該如何修改?

感謝大大

TOP

回復 3# koiiven
Range("H5").Offset(s, 0).Resize(j, 1).Select   '會選擇H8到H10   該如何修改才能選擇H5到H7呢?
Range("H5").Resize(j, 1).Select  是這樣嗎?

TOP

回復 3# koiiven

我認為是在同一個s值要做兩欄位的選取,對嗎?
那s就要執行完兩次後再加上j
  1. Sub Macro2()
  2. Dim j&
  3. Dim k&
  4. k = InputBox("總數量", , 0)

  5. Do Until s >= k
  6. i = InputBox("輸入名稱", , 0)
  7. j = InputBox("輸入數量", , 0)
  8.    
  9.     Sheets("空白表格").Select
  10.     Sheets("空白表格").Copy After:=Sheets(2)
  11.     Sheets(3).Select
  12.     Sheets(3).Name = i
  13.    
  14.     Sheets("原始檔").Select
  15.     Range("B5").Offset(s, 0).Resize(j, 3).Select
  16.     Selection.Copy
  17.     Sheets(3).Select
  18.     Range("C7").Select
  19.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  20.         :=False, Transpose:=False
  21.    
  22.     Sheets("原始檔").Select
  23.     Range("H5").Offset(s, 0).Resize(j, 1).Select   '會選擇H8到H10   該如何修改才能選擇H5到H7呢?
  24. s = s + j
  25.     Selection.Copy
  26.     Sheets(3).Select
  27.     Range("F7").Select
  28.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  29.         :=False, Transpose:=False

  30. Loop

  31. End Sub
複製代碼
學海無涯_不恥下問

TOP

原來如此
把s = s + j移到最後在執行

感謝兩位大大幫忙

TOP

小弟拜讀過這篇 [轉貼] VBA的寫作技巧與增進效能

將程式碼改成
  1. Sub Macro2()
  2. Dim j&
  3. Dim k&
  4. k = InputBox("元件總數量", , 0)

  5. Do Until s >= k
  6. i = InputBox("輸入報告名稱", , 0)
  7. j = InputBox("輸入元件數量", , 0)
  8.    
  9.     Sheets("空白表格").Select
  10.     Sheets("空白表格").Copy After:=Sheets(2)
  11.     Sheets(3).Select
  12.     Sheets(3).Name = i
  13.    
  14.     Sheets(3).Range("C7") = Sheets("原始檔").Range("B5").Offset(s, 0).Resize(j, 3)

  15. s = s + j

  16. Loop

  17. End Sub
複製代碼
可是程式運作完之後沒有反應
想請問大大該如何修改?

此外
  1. Sub Macro3()
  2. '
  3. ' Macro5 Macro
  4. '

  5. '
  6.    
  7. i = InputBox("年", , 0)
  8. j = InputBox("月", , 0)
  9. k =InputBox("日", , 0)

  10.        Range("A1").Select
  11.        ActiveCell.FormulaR1C1 =    '
  12.    
  13. End Sub
複製代碼
想請問大大
如果想在 InputBox打入日期年月日
但只替換A1儲存格內XXX年XX月XX日內的X代號
等號後面的程式碼該如何撰寫?

感謝大大

TOP

回復 7# koiiven
ActiveCell= DateSerial( i, j, k)

TOP

感謝大大回覆

執行之後為西元的年份

且格式為xxxx/xx/xx

有辦法將年分設定為民國
且格式為xxx年xx月xx日


i = InputBox("年", , 0)
j = InputBox("月", , 0)
k = InputBox("日", , 0)

即可替換x內的數值

感謝

TOP

回復 9# koiiven
  1. With ActiveCell
  2.     .Value = DateSerial(i, j, k)
  3.     .NumberFormatLocal = "[$-404]e""年""m""月""d""日"";@"
  4. End With
複製代碼

TOP

        靜思自在 : 發脾氣是短暫的發瘋。
返回列表 上一主題