Board logo

標題: [發問] 請問VBA有辦法達成 輸入數量 就打幾個數量的文字出來嗎? [打印本頁]

作者: starry1314    時間: 2015-5-16 17:49     標題: 請問VBA有辦法達成 輸入數量 就打幾個數量的文字出來嗎?


[attach]20959[/attach]
作者: lpk187    時間: 2015-5-17 13:10

回復 1# starry1314


    是這樣嗎?
  1. Sub 巨集1()
  2. Rng = [B3]
  3. If Rng = "" Then
  4.     MsgBox "請輸入數量"
  5.     Exit Sub
  6. End If
  7. For I = 1 To Rng
  8.     Cells(I + 6, 1) = [C3]
  9. Next
  10. End Sub
複製代碼

作者: starry1314    時間: 2015-5-17 13:20

本帖最後由 starry1314 於 2015-5-17 13:24 編輯

回復 2# lpk187


    是的∼真是太強了!這次的程式碼對我來說容易吸收多了.......


作者: lpk187    時間: 2015-5-17 13:28

回復 1# starry1314

倘若用工作表事件則可以把下面程序貼到工作表的程序中,不用按按鈕就可達成自動化
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Address = [B3].Address Then
  3.     If Target = "" Then
  4.         MsgBox "請輸入數量"
  5.         Exit Sub
  6.     End If
  7.     Application.EnableEvents = False
  8.     If [A7] <> "" Then
  9.         Range("A7:" & Cells(Rows.Count, 1).End(xlUp).Address) = ""
  10.     End If
  11.     For I = 1 To Target
  12.         Cells(I + 6, 1) = Target.Offset(0, 1)
  13.     Next
  14.     Application.EnableEvents = True
  15. End If
  16. End Sub
複製代碼

作者: starry1314    時間: 2015-5-17 13:49

回復 4# lpk187

好東西~~收下了!!!

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = [B3].Address Then

    有點複雜...查了下 容易理解多了....想問下[target],可隨我更改如 AA? ab?

Private是“私有”,這樣的程序只能在指定範圍使用,例如在Sheet裡
Sub是“分支”,也就是說是諸多程序之一
By是“伴隨”
val是“值”
target是變量的名稱,可以隨便改成其它的,例如“XX”
As是“作為”
Range是“區域”,這裡是變量的一種類型

一旦新選擇了一個單元格區域,就引發這個程序,同時產生一個名字為target的變量,這個變量代表所選中的單元格區域。

作者: lpk187    時間: 2015-5-17 15:14

回復 5# starry1314


    Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = [B3].Address Then'這句Target.Address是指觸動的儲存格位址,如果是 [B3].Address,這個儲存格的位址如果是Target的位址就執行 If 成立下的程式碼,所以這裡的B3是可以變更的
但這裡不能是 If Target = [B3] Then簡略掉Address則是讀到"值"(.Value),除非你用到的是值(.Value)的部份
因為Target已經是設定是一個Range物件,則也可以利用Range的屬性
例如可以讀取"行"Target.Row
讀取列Target.Column
讀取值Target.Value或Target表示




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