Board logo

標題: [發問] 請問各位大大! [打印本頁]

作者: koiiven    時間: 2011-9-7 17:14     標題: 請問各位大大!

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

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

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

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

請問各位大大
小弟該如何修改?
感謝!
作者: Hsieh    時間: 2011-9-7 18:41

回復 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
複製代碼

作者: koiiven    時間: 2011-9-9 15:15

執行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開始選擇
請問該如何修改?

感謝大大
作者: GBKEE    時間: 2011-9-9 15:23

回復 3# koiiven
Range("H5").Offset(s, 0).Resize(j, 1).Select   '會選擇H8到H10   該如何修改才能選擇H5到H7呢?
Range("H5").Resize(j, 1).Select  是這樣嗎?
作者: Hsieh    時間: 2011-9-9 16:22

回復 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
複製代碼

作者: koiiven    時間: 2011-9-13 11:03

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

感謝兩位大大幫忙
作者: koiiven    時間: 2011-9-13 13:38

小弟拜讀過這篇 [轉貼] 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代號
等號後面的程式碼該如何撰寫?

感謝大大
作者: GBKEE    時間: 2011-9-13 14:47

回復 7# koiiven
ActiveCell= DateSerial( i, j, k)
作者: koiiven    時間: 2011-9-13 15:28

感謝大大回覆

執行之後為西元的年份

且格式為xxxx/xx/xx

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


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

即可替換x內的數值

感謝
作者: GBKEE    時間: 2011-9-13 16:08

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

作者: koiiven    時間: 2011-9-19 11:08

感謝大大回答

小弟測試後

一直出現同一個日期   88年11月30日

小弟再請問一下
如果不只限定日期
假設是名稱
即在Inputbox內輸入的文字
能修改在Cell內"部分"的文字
並非全部修改

感謝大大
作者: GBKEE    時間: 2011-9-19 11:39

回復 11# koiiven
傳上程式碼看看




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