2
我得到了這個宏,它使我的電子倉庫中的標記電路的視覺幫助,我想識別它們,但有時它可以工作(只在兩個第一個標籤,然後,它缺乏一些細胞信息,這是代碼:爲什麼有時候這段代碼有效,有時卻不行?
Public Sub VisualAids()
Dim DB_Range, StartVisuals As range
Dim Origen As range
Set DB_Range = Worksheets("DBCircuits").range("B2:K573")
Set Origen = Worksheets("visuales").range("C2")
Dim i, j, TotalLabels, LabelsCounter As Integer
Dim Labels As Integer
Dim CircuitName, Location, Color1, Color2, DailyReq, StdPack As String
TotalLabels = Application.WorksheetFunction.Sum(Worksheets("DBCircuits").range("K2:K573"))
For i = 1 To TotalLabels
CircuitName = DB_Range.Cells(i, 1)
Location = DB_Range.Cells(i, 8)
Color1 = DB_Range.Cells(i, 6)
Color2 = DB_Range.Cells(i, 7)
DailyReq = DB_Range.Cells(i, 3)
StdPack = DB_Range.Cells(i, 4)
Labels = DB_Range.Cells(i, 10)
For j = 1 To Labels
Origen.Offset(0, 1) = CircuitName
Origen.Offset(1, 1) = Location
Origen.Offset(3, 1) = DailyReq
Origen.Offset(4, 1) = StdPack
Select Case Color1
Case "0"
Origen.Offset(2, 3).Interior.Color = RGB(0, 0, 0)
Origen.Offset(2, 5).Interior.Color = RGB(0, 0, 0)
Case "1"
Origen.Offset(2, 3).Interior.Color = RGB(153, 102, 51)
Origen.Offset(2, 5).Interior.Color = RGB(153, 102, 51)
Case "2"
Origen.Offset(2, 3).Interior.Color = RGB(255, 0, 0)
Origen.Offset(2, 5).Interior.Color = RGB(255, 0, 0)
Case "3"
Origen.Offset(2, 3).Interior.Color = RGB(255, 102, 0)
Origen.Offset(2, 5).Interior.Color = RGB(255, 102, 0)
Case "4"
Origen.Offset(2, 3).Interior.Color = RGB(255, 255, 0)
Origen.Offset(2, 5).Interior.Color = RGB(255, 255, 0)
Case "5"
Origen.Offset(2, 3).Interior.Color = RGB(0, 255, 0)
Origen.Offset(2, 5).Interior.Color = RGB(0, 255, 0)
Case "6"
Origen.Offset(2, 3).Interior.Color = RGB(0, 176, 240)
Origen.Offset(2, 5).Interior.Color = RGB(0, 176, 240)
Case "7"
Origen.Offset(2, 3).Interior.Color = RGB(0, 176, 240)
Origen.Offset(2, 5).Interior.Color = RGB(0, 176, 240)
Case "8"
Origen.Offset(2, 3).Interior.Color = RGB(128, 128, 128)
Origen.Offset(2, 5).Interior.Color = RGB(128, 128, 128)
Case "9"
Origen.Offset(2, 3).Interior.Color = RGB(255, 255, 255)
Origen.Offset(2, 5).Interior.Color = RGB(255, 255, 255)
Case Else
Origen.Offset(2, 3).Value = "-"
Origen.Offset(2, 5).Value = "-"
End Select
Select Case Color2
Case "0"
Origen.Offset(2, 4).Interior.Color = RGB(0, 0, 0)
Case "1"
Origen.Offset(2, 4).Interior.Color = RGB(153, 102, 51)
Case "2"
Origen.Offset(2, 4).Interior.Color = RGB(255, 0, 0)
Case "3"
Origen.Offset(2, 4).Interior.Color = RGB(255, 102, 0)
Case "4"
Origen.Offset(2, 4).Interior.Color = RGB(255, 255, 0)
Case "5"
Origen.Offset(2, 4).Interior.Color = RGB(0, 255, 0)
Case "6"
Origen.Offset(2, 4).Interior.Color = RGB(0, 176, 240)
Case "7"
Origen.Offset(2, 4).Interior.Color = RGB(0, 176, 240)
Case "8"
Origen.Offset(2, 4).Interior.Color = RGB(128, 128, 128)
Case "9"
Origen.Offset(2, 4).Interior.Color = RGB(255, 255, 255)
Case Else
Origen.Offset(2, 4).Value = "-"
End Select
LabelsCounter = LabelsCounter + 1
If LabelsCounter Mod 2 = 0 Then
Origen.Offset(6, 1) = "Back visual"
'the next one would be down-left
Set Origen = Origen.Offset(11, -9)
Else
Origen.Offset(6, 1) = "Front visual"
'the next one would be right
Set Origen = Origen.Offset(0, 9)
End If
Next j
Next i
End Sub
的一點是,有時CircuitName是沒有添加到v isuals,以及位置,你能幫助我嗎?我仍在努力查找問題
嘗試在這些之後添加'.Value':'Origen.Offset(0,1)'因此它是'Origen.Offset(0,1).Value =' – ib11
如果你想聲明在一行中有幾個'Range'變量,那麼你將不得不寫'Dim作爲範圍的DB_Range,作爲範圍的StartVisuals。你的行'Dim DB_Range,StartVisuals As Range'相當於'Dim DB_Range作爲Variant,StartVisuals As Range'並且你的這行代碼Dim CircuitName,Location,Color1,Color2,DailyReq,StdPack As String'與VBA相同'Dim CircuitName爲Variant,Location爲Variant,Color1爲Variant,Color2爲Variant,DailyReq爲Variant,StdPack爲String'。改變這可能會解決一些問題。 – Ralph
謝謝@ ib11,這也是問題所在,但真正的問題是我想把一個值放在合併的單元格中,我錯過了這個代碼(這是一個例子)'Origen.Offset(0,1).MergeArea .Cells(1,1).Value = CircuitName',所以我將這段代碼添加到一些語句中,也是你的建議,非常感謝。 順便說一句@Ralph,我不想這樣做是因爲內存的使用,但最後它不是這個問題,謝謝無論如何,我真的很感謝你的幫助 – JoeJoe