標題:
[發問]
我想寫每個機種�媬鴷X 所屬料號中最小實際進料的數字
[打印本頁]
作者:
scjiao
時間:
2014-6-21 23:39
標題:
我想寫每個機種�媬鴷X 所屬料號中最小實際進料的數字
請問大大們,如檔案,我想寫每個機種�媬鴷X 所屬料號中(期初庫存+實際進料)最小的數字,該如何寫VBA程式碼??,謝謝
請大大回覆時貼程式碼
[attach]18526[/attach]
作者:
GBKEE
時間:
2014-6-22 09:55
回復
1#
scjiao
試試看
Option Explicit
Sub EX()
Dim Rng(1 To 2) As Range, E As Range
Dim AR(), i As Integer
With Sheets("Sheet1")
Set Rng(1) = .Range("A6", .Range("A" & .Rows.Count).End(xlUp)).SpecialCells(xlCellTypeConstants)
'讀取機總的範圍有文字的儲存閣
End With
ReDim AR(0 To Rng(1).Areas.Count, 1 To 4)
AR(0, 1) = "機總"
AR(0, 2) = "料號"
AR(0, 3) = "期初庫存"
AR(0, 4) = "實際進料"
For i = 1 To Rng(1).Areas.Count
AR(i, 1) = Rng(1).Areas(i).Cells(1)
Set Rng(2) = Rng(1).Areas(i).Resize(, 2).Columns(2).SpecialCells(xlCellTypeConstants)
'機總的範圍 [第2欄] 有文字的儲存閣
For Each E In Rng(2).Areas
If E.Range("b1") + E.Range("E5") < AR(i, 3) + AR(i, 4) Then
'"期初庫存"+"實際進料"
AR(i, 2) = E.Cells(1)
AR(i, 3) = E.Range("b1") '以E.Cells(1)
AR(i, 4) = E.Range("E5")
ElseIf AR(i, 2) = "" Then '料號: 陣列元素=""
AR(i, 1) = Rng(1).Areas(i).Cells(1)
AR(i, 2) = E.Cells(1)
AR(i, 3) = E.Range("b1")
AR(i, 4) = E.Range("E5")
End If
Next
Next
Sheets("Sheet2").[A1].Resize(UBound(AR), UBound(AR, 2)) = AR '顯示
End Sub
複製代碼
作者:
scjiao
時間:
2014-6-22 11:36
回復
2#
GBKEE
謝謝版主的熱心回答,非常感謝~:)
作者:
scjiao
時間:
2014-6-22 21:49
回復
2#
GBKEE
請問版主大大
For Each E In Rng(2).Areas
next
Rng(2).Areas 是什麼意思呀?
E.range("b1")又是什麼意思呀?
不好意思,初學者
作者:
GBKEE
時間:
2014-6-23 06:44
回復
4#
scjiao
Option Explicit
Sub Ex()
Dim Rng As Range, i As Integer
Application.VBE.MainWindow.Visible = True
Application.VBE.Windows("即時運算").Visible = True
Set Rng = Range("A1:C1,A5:C5,A3:B4,A10:A15")
'Areas 屬性 傳回 Areas 集合,此集合代表多重範圍中的所有範圍。唯讀。
For i = 1 To Rng.Areas.Count '多重範圍的個數
Stop '按F8執行下一步
Debug.Print vbLf & Rng.Areas(i).Address
'以 Areas(i)為基準的 Range 物件,該物件代表一個儲存格或儲存格範圍。
Debug.Print Rng.Areas(i).Range("A1").Address
Debug.Print Rng.Areas(i).Range("B1").Address
Debug.Print Rng.Areas(i).Range("C1").Address
Next
End Sub
複製代碼
作者:
scjiao
時間:
2014-6-23 07:41
回復
5#
GBKEE
非常感謝版主的回覆,那請問
For Each E In Rng(2).Areas
next
其中
E.range("b1")是什麼意思
謝謝版大
作者:
GBKEE
時間:
2014-6-23 09:10
回復
6#
scjiao
以 E 為基準的 Range 物件,該物件代表一個儲存格或儲存格範圍
與 5# 的程式碼運行結果ㄧ樣
Option Explicit
Sub Ex()
Dim Rng As Range, E As Range
Application.VBE.MainWindow.Visible = True
Application.VBE.Windows("即時運算").Visible = True
Set Rng = Range("A1:C1,A5:C5,A3:B4,A10:A15")
'Areas 屬性 傳回 Areas 集合,此集合代表多重範圍中的所有範圍。唯讀。
For Each E In Rng.Areas '多重範圍的個數
Stop '按F8執行下一步
Debug.Print vbLf & E.Address
'以 E 為基準的 Range 物件,該物件代表一個儲存格或儲存格範圍。
Debug.Print E.Range("A1").Address
Debug.Print E.Range("B1").Address
Debug.Print E.Range("C1").Address
Next
End Sub
複製代碼
[attach]18540[/attach]
作者:
scjiao
時間:
2014-6-23 23:29
回復
7#
GBKEE
謝謝版大,我完全了解了,最後我想問的是其中一段程式碼
With Sheets("Sheet1")
Set Rng(1) = .Range("A6",
.Range("A" & .Rows.Count).End(xlUp)).SpecialCells(xlCellTypeConstants)
'讀取機總的範圍有文字的儲存閣
End With
其中
.Range("A" & .Rows.Count).End(xlUp)).SpecialCells(xlCellTypeConstants)
此specialcells(xlcellTypeConstants) 參數是代表什麼意思
作者:
GBKEE
時間:
2014-6-24 08:44
回復
8#
scjiao
到 VBA視窗 說明 輸入
SpecialCells
看看
盡量到 說明 中輸入 疑問的屬性.方法.函數.會多了解VBA的
作者:
scjiao
時間:
2014-6-24 23:15
回復
9#
GBKEE
嗯,謝謝版主
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)