AW: Kopiertes Makro läuft nicht in anderer Tabelle
09.01.2013 16:42:09
Reiner
Das Makro ist schon richtig da es in der anderen Tabelle auch funktioniert.
Ich habe jatzt mal alle anderen Makros rausgelöscht - gleicher Fehler.
Ich habe dann das erste Tabellenblatt gelöscht und dann funktioniert es.
Im VBA Editor unter "DieseArbeitsmappe" habbe ich zwei Makros die Tabellenblätter schützen.
Private Sub Workbook_Open()
' alle Fenster schützen und ein-/ausblenden (zur Sicherheit)
Worksheets("Ordersheet").Activate
ActiveSheet.Protect "MeinPW"
ActiveSheet.Visible = True
Worksheets("Export").Activate
ActiveSheet.Protect "MeinPW"
ActiveSheet.Visible = True
Worksheets("Start").Activate
ActiveSheet.Protect "MeinPW"
ActiveSheet.Visible = False
Worksheets("Ordersheet").Activate
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Cancel = False
' alle Fenster schützen und ein-/ausblenden (zur Sicherheit)
Worksheets("Ordersheet").Activate
ActiveSheet.Protect "MeinPW"
ActiveSheet.Visible = True
Worksheets("Export").Activate
ActiveSheet.Protect "MeinPW"
ActiveSheet.Visible = True
Worksheets("Start").Activate
ActiveSheet.Protect "MeinPW"
ActiveSheet.Visible = True
Worksheets("Start").Activate
End Sub
In der Tabelle1 steht ein Makro das bei einer Zelländerung ein anderes Makro aufruft:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F24:F24")) Is Nothing Then
Call PingHost_Hostname
End If
If Not Intersect(Target, Range("F39:F39")) Is Nothing Then
Call PingHost_Incoming
End If
End Sub
Sub PingHost_Hostname()
' Abfragen ob der Druckerhostname erreichbar ist
ActiveSheet.Unprotect "MeinPW"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\.\root\cimv2")
With Tabelle1 'Tabelle anpassen
Z = 24 'Zeilennummer des Hostnamen
S = 6 'Spaltennummer des Hostnamen
W = 24 'Ausgabezeile für IP
A = 13 'Ausgabespalte für IP
.Cells(W, A).Interior.ColorIndex = 0 'Ausgabezelle IP leeren und ohne Farbe
.Cells(W, A).Value = "" 'Ausgabezelle IP leeren und ohne Farbe
.Cells(W + 1, A).Interior.ColorIndex = 0 'Ausgabezelle ms leeren und ohne Farbe
.Cells(W + 1, A).Value = "" 'Ausgabezelle ms leeren und ohne Farbe
If .Cells(Z, S).Text "" Then 'Wenn Hostname nicht leer
Set colPings = objWMIService.ExecQuery _
("Select * From Win32_PingStatus where Address = '" & .Cells(Z, S).Text & "'")
For Each objPing In colPings
If objPing.StatusCode = 0 Then
.Cells(W, A).Value = objPing.ProtocolAddress 'IP-Adresse
.Cells(W + 1, A).Value = objPing.ResponseTime & " ms" 'Antwortzeit in ms
.Cells(W, A).Interior.ColorIndex = 4 'erreichbar = grün
Else
.Cells(W, A).Value = "not reachable"
.Cells(W, A).Interior.ColorIndex = 3 'nicht erreichbar = rot
End If
Next
End If
End With
ActiveSheet.Protect "MeinPW"
End Sub
'
Ich ging immer davon aus, daß ein (nicht aufgerufenes) Makro anderes Tabellenblatt keine Auswirkungen habt.
Wenn es Sinn macht könnte ich auch ein neutralisiertes File erstellen und hochladen aber ich möchte euch auch nicht mit dem Thema zu sehr belasten.
Ich bin auf dem besten Weg in die Psychiatrie denn so ein widerspenstiges Excel hatte ich noch nie.
Viele Grüße
Reiner