2016-05-30 3 views
2

私は電気倉庫の回路にラベルを付けるための視覚的支援をしていますが、それらを特定したいと思いますが、時にはそれがうまく機能します(最初の2つのラベルでのみです。コード:image2なぜこのコードが動作するのはなぜですか、時にはそうではありませんか?

点は時々CircuitNameであることである:私はこのセルを埋めるためにふり、この(ビジュアル・ワークシート)Image1

とDB_Rangeと

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 

は、以下の(DBCircuitsワークシート)でありますvに追加されていないまた、あなたは私を助けてくれますか?だから、あなたが持っているでしょうOrigen.Offset(0, 1)をので、それはOrigen.Offset(0, 1).Value =

です::私はまだ問題にこれらの行の後に.Valueを追加する

+1

'Origen.Offset(0、1)'に 'Origen.Offset(0、1).Value =' – ib11

+0

のように '.Value'を追加してみてください。ある行に複数の 'Range'変数がある場合、' Dim DB_RangeをRange、StartVisualsをRangeとします。 'Dim DB_Range、StartVisuals As Range'は' Dim DB_Range as Variant、StartVisuals As Range'に相当し、 'Dim CircuitName、Location、Color1、Color2、DailyReq、StdPack As String'のこの行はVBAと同じです'VariantとしてのDim CircuitName、Variantとしての位置、VariantとしてのColor1、VariantとしてのColor2、VariantとしてのDailyReq、' StdPack As String'を含む。変更すると、いくつかの問題が解決する可能性があります – Ralph

+0

@ ib11ありがとうございました、それも問題でしたが、実際の問題は、私がこのコードを逃した(私はこのコードを逃した) 'Origen.Offset(0、1).MergeArea .Cells(1、1).Value = CircuitName'なので、このコードをいくつかのステートメントに加えて、あなたの提案もありがとう。 ところで@Ralph、私はメモリ使用量のためにそうしたくなかったが、結局問題ではなかった、とにかく、あなたの助けに本当に感謝します。 – JoeJoe

答えて

0

てみてくださいを見つけるために取り組ん

Origen.Offset(0, 1).Value = CircuitName 
Origen.Offset(1, 1).Value = Location 
Origen.Offset(3, 1).Value = DailyReq 
Origen.Offset(4, 1).Value = StdPack 

(これは、単一またはマージされた細胞の両方のために働きます、

関連する問題