VBA-Makro funktioniert nicht in mehrere Arbeitsblätter innerhalb der Arbeitsmappe
Arbeite ich für ein Kommunikations-Unternehmen, und ich bin versucht, code auszuführen, der auf ein Excel-Dokument kompiliert Daten über Probleme Berichte über die Produkte.
Den Makros, die ich ausführen möchten, erzeugen ein Risiko spider-Diagramm für jeden Datensatz, wenn Sie auf über die Spalten (Monate).
Das makro habe ich funktioniert in dem ersten Arbeitsblatt, aber ich kann nicht ankommen es zu wirken in dem zweiten Arbeitsblatt, wenn es im wesentlichen die gleichen Daten.
Ich würde schätzen jede Hilfe, die ich bekommen kann!!
Dies ist der code den ich habe:
Private Sub Worksheet_Calculate()
Call UpdateTotalRatings
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$14" Then
Call UpdateTotalRatings
End If
End Sub
Private Sub UpdateTotalRatings()
Dim Cell As Range
Dim LastCol As String
Application.ScreenUpdating = False
' Ensure number of colours is valid (must be 3 or 6).
If ActiveSheet.Range("B14").Value <> 3 And _
ActiveSheet.Range("B14").Value <> 6 Then
ActiveSheet.Range("B14").Value = 3
End If
' Determine right-most column.
LastCol = Mid(ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Address, 2, 1)
For Each Cell In Range("B13:" & LastCol & "13")
If IsNumeric(Cell.Value) Then
Cell.Interior.Color = ThisWorkbook.GetColour(Cell.Value, _
ActiveSheet.Range("B14").Value)
End If
Next
Application.ScreenUpdating = True
End Sub
Haben Sie diese Ereignis-Handler in jedem Arbeitsblatt code-Modul? Ist UpdateTotal Bewertungen in einem normalen Modul?
InformationsquelleAutor user1472363 | 2012-06-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn du deinen code (mit einigen änderungen) in das Modul "DieseArbeitsmappe", es wird auf jedes Blatt der Arbeitsmappe.
Wenn Sie Blätter, die Sie nicht Bearbeiten möchten, können Sie den Sh-argument. Vielleicht ist es auf der Grundlage der Blatt-name
nur Blätter, deren Namen beginnen mit Report_. Oder
zur überprüfung einer Zelle (wie A14), die einen bestimmten Wert zu identifizieren, die Blätter zu verarbeiten.
InformationsquelleAutor Dick Kusleika
Diesem Verfahren
Worksheet_Change
ist eine Ereignis-Prozedur.Es soll (und kann) nur in dem entsprechenden Worksheet-Modul. Das ist, warum Ihr code funktioniert nicht für die anderen Blätter.
Um es zu bekommen, müssen Sie zu :
Target
von der Prozedur (oder zumindest die richtige Arbeitsblatt), um die main-Prozedur----- EDIT --------
Zuerst ändern
zu
Dann, verschieben Sie alle
Sub UpdateTotalRatings(Optional ByVal Target As Range)
zu einem ModulUnd jeder Arbeitsblatt Modul hinzufügen:
Müssen Sie den
Worksheet_Change
auf jedes Arbeitsblatt ModulIch bin immer noch sehr verwirrt, sorry! In meinem VBA-code für das Arbeitsblatt brauchen diese meacro zu arbeiten ich habe genau das, was code ist oben... Also brauche ich eine andere hinzufügen Worksheet_Change?
Ich habe bearbeitet meine post, klarer zu werden. Schauen
InformationsquelleAutor JMax