Ich habe dieses Makro, das visuelle Hilfsmittel für die Kennzeichnung Schaltungen aus meinem Elektrohandwerk macht, und ich möchte sie identifizieren, aber manchmal funktioniert es (nur in den beiden ersten Etiketten, und dann fehlt es Informationen in einigen Zellen, das ist die Code:Warum funktioniert dieser Code manchmal und manchmal nicht?
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
mit diesem i vortäuschen diese Zellen (visuelle Arbeitsblatt)
und die DB_Range ist die folgende (DBCircuits Arbeitsblatt) zu füllen:
der Punkt ist, dass manchmal die CircuitName ist nicht zum v hinzugefügt Ituals, und auch die Position, können Sie mir bitte helfen? Ich arbeite immer noch das Problem
Versuchen Sie '.Value' nach diesen hinzuzufügen: 'Origen.Offset (0, 1)' so ist es 'Origen.Offset (0, 1) .Wert =' – ib11
Wenn Sie deklarieren möchten mehrere 'Range'-Variablen in einer Zeile, dann müssen Sie' Dim DB_Range als Range, StartVisuals As Range'. Ihre Zeile 'Dim DB_Range, StartVisuals As Range' ist gleichbedeutend mit' Dim DB_Range als Variante, StartVisuals As Range' und diese Zeile von Ihnen 'Dim CircuitName, Ort, Color1, Color2, DailyReq, StdPack As String' ist für VBA gleich 'Dim CircuitName als Variante, Position als Variante, Color1 als Variante, Color2 als Variante, DailyReq als Variante, StdPack als String'. Das Ändern könnte einige Probleme lösen. – Ralph
danke @ ib11, es war auch das Problem, aber das eigentliche Problem war, dass ich einen Wert in eine verbundene Zellen setzen wollte, verpasste ich diesen Code (das ist ein Beispiel) 'Origen.Offset (0, 1) .MergeArea .Cells (1, 1) .Value = CircuitName', also füge ich diesen Code einigen Anweisungen hinzu, und auch deinem Vorschlag, vielen Dank. übrigens @Ralph, wollte ich nicht wegen der Speicherauslastung, aber am Ende war es nicht das Problem, danke trotzdem, ich schätze deine Hilfe wirklich – JoeJoe