返回列表 上一主題 發帖

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

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


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

TOP

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

回復 2# lpk187


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

TOP

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

TOP

回復 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的變量,這個變量代表所選中的單元格區域。

TOP

回復 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表示

TOP

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