Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

VBA Fehler 13 Typen unverträglich

Betrifft: VBA Fehler 13 Typen unverträglich von: Sebastian
Geschrieben am: 22.10.2020 08:37:38

Hallo Zusammen,

ich habe eine Spalte mit etwa 50 Zahlen (Zeilen).
Diese kommen per Sverweis als ganze Zahlen rein.

Diese 50 Zahlen sollen nach VBA Code Formen einfärben, wie bei einer Ampel. Lieder kommt immer dieser Fehler. Ich bin ratlos.
Per hand und einzeln eintragen der Zahlen geht das.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target = Range("B2") Then    'Wert steht in A1
        ActiveSheet.Shapes("Bad Muskau").Select    'Freeform 1 ist der Name der Freihandform
        With Selection
            .ShapeRange.Fill.ForeColor.RGB = fctFarbe(Target.Value)
        End With
        Target.Select
    End If
' Hier für eine weitere Form

        If Target = Range("B3") Then    'Wert steht in A2
        ActiveSheet.Shapes("Beiersdorf").Select    'Freeform 2 ist der Name der Freihandform
        With Selection
            .ShapeRange.Fill.ForeColor.RGB = fctFarbe(Target.Value)
        End With
        Target.Select
   ' Hier für stehen dann weitere 50 .........
End Sub

Private Function fctFarbe(dblWert As Long) As Long
     If dblWert >= 50 Then
         fctFarbe = RGB(255, 0, 0)                  'rot
     ElseIf dblWert >= 34 And dblWert < 50 Then
         fctFarbe = RGB(255, 127, 0)                'orange
     ElseIf dblWert >= 20 And dblWert < 34 Then
         fctFarbe = RGB(255, 255, 0)                'gelb
     ElseIf dblWert >= 0 And dblWert < 20 Then
         fctFarbe = RGB(0, 255, 0)                  'grün
     Else
         fctFarbe = RGB(255, 255, 255)
     End If
End Function
https://www.herber.de/bbs/user/141015.xlsm

Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Herbert_Grom
Geschrieben am: 22.10.2020 09:23:19

Hallo Sebastian,

von welchem Blatt sprichst du denn?

Servus

Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Sebastian
Geschrieben am: 22.10.2020 10:10:50

Tabellenblatt Karte ....

Spalte B wird ausgelesen, in Spalte C sind die Sverweise drin. Die sollten aber in Spalte B stehen, nur zum Test hab ich die in Spalte per Hand eingetragen

Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Herbert_Grom
Geschrieben am: 22.10.2020 10:30:02

Wodurch soll das Makro ausgelöst werden? Mittels einer Schaltfläche?

Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Sebastian
Geschrieben am: 22.10.2020 12:59:02

Das Makro sollte immer gehen, wenn neue Werte drin stehen oder das Tabellenblatt neu berechnet wird

Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Daniel
Geschrieben am: 22.10.2020 09:31:38

Hi

Warum machst du das Umfärben nicht in der Zelle über bedingte Formatierung?
Ist doch viel einfacher und braucht kein Makro.

Gruß Daniel

Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Sebastian
Geschrieben am: 22.10.2020 10:11:40

Hallo ich will nicht die Zelle sondern die Formen (Kreise ) farblich markieren per VBA....

Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Daniel
Geschrieben am: 22.10.2020 10:22:00

ja, aber die Frage ist, müssen es unbedingt Formen sein?
oder willst du die Formen nachträglich in die Landkarte zum jeweiligen Landkreis verschieben?
dann sind formen notwendig.

aber auch dann gäbe es eine VBA-freie Lösung:

richte in Spalte D wie von mir beschrieben die Bedingte Formatierung ein.
mach von jeder Zelle in Spalte D eine verknüpfte Bildkopie (Zelle kopieren und per Kontextmenü - Inhalte Einfügen - Verküpfte Grafik (unten rechts) einfügen)
diese Bildkopie kannst du dann in die Landkarte verschieben.
ist zwar dann immer rechteckig, kommt dafür aber ohne Programmierung aus (was deinem Kenntnisstand entgegen kommen sollte)
damit könntest du sogar ohne großen Aufwand die Ampeln aus den Symbolsätzen verwenden

Gruß Daniel

Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Herbert_Grom
Geschrieben am: 22.10.2020 10:27:51

Hallo Daniel,

deine Idee ist wie immer prima und ich würde sie auch genau so anwenden. Doch wenn er halt seine Shapes will, dann lass sie ihm doch. Zumal ich schon an der entspr. Lösung arbeite und fast fertig bin!

Servus

Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Sebastian
Geschrieben am: 22.10.2020 10:12:52

Hallo ich will nicht die Zelle sondern die Formen (Kreise ) farblich markieren per VBA....

Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Luschi
Geschrieben am: 22.10.2020 09:36:53

Hallo Sebastian,

die If-Statements müssen so formuliert werden:
If Target.Address(0,0) = Range("B2").Address(0,0) Then 'Wert steht in A1

denn Du willst ja nicht Werte sondern Zelladressen miteinander vergleichen
- Target = Range("B2")
  ist das gkeiche wie
- Target.Value = Range("B2").Value

Gruß von Luschi
aus klein-Paris



Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Daniel
Geschrieben am: 22.10.2020 10:13:05

Hi

sehr aufwendiger Code.
du solltest das per Schleife machen.
probier mal diesen Code anstelle deines bisherigen:
die Umfärbung wird damit ausgelöst, wenn die SVerweisformeln neu berechnet werden.
Private Sub Worksheet_Calculate()
Dim shpe As Shape
Dim Zelle As Range
Dim Meldung As String

For Each shpe In Me.Shapes
    Set Zelle = Columns(1).Find(what:=shpe.Name, LookIn:=xlValues, lookat:=xlWhole)
    If Not Zelle Is Nothing Then
        shpe.Fill.ForeColor.RGB = fctFarbe(Zelle.Offset(0, 2).Value)
    Else
        Select Case shpe.Name
            Case "Picture 2"
            Case Else
                Meldung = Meldung & vbLf & "- " & shpe.Name
                shpe.Fill.ForeColor.RGB = RGB(200, 200, 200)
        End Select
    End If
Next
If Meldung <> "" Then
    MsgBox "F?r folgende Shapes konnte keine Datenzeile gefunden werden:" & vbLf _
          & Meldung & vbLf & vbLf _
          & "Bitte pr?fen sie die Schreibweisen von Shape-Namen und Text in Spalte A:"
End If
End Sub

außerdem bekommst du eine Hinweismeldung, wenn du mal einen Shape-Namen anders geschrieben hast als in Spalte A.

die Namen der Grafiken, die sich sonst noch auf dem Blatt befinden, solltest du bei Select Case auflisten (analog "Picture 2"), sonst bekommst du für die immer eine Fehlermeldung.

sollten weitere Gemeinden hinzukommen oder wegfallen, muss der Code nicht geändert werden, es reicht die entsprechenden Shapes hinzuzufügen oder zu löschen

Gruß Daniel

Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Sebastian
Geschrieben am: 22.10.2020 10:44:01

Danke dir .....

das geht ja Fix hier :)

endlich kann ich meinen eigenen Risikogebiete deklarieren :)

Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Sebastian
Geschrieben am: 22.10.2020 12:58:03

Hallo Daniel,

leider hab ich nun das Problem, wenn ich im Ersten Tabellenblatt Formel ändere oder Zahlen eintrage, kommt jedesmal die Fehlermeldung aus dem VBA Skript.

Rectangel 1 sucht er immer :(

MsgBox "F?r folgende Shapes konnte keine Datenzeile gefunden werden:" & vbLf _
& Meldung & vbLf & vbLf _
& "Bitte pr?fen sie die Schreibweisen von Shape-Namen und Text in Spalte A:


Das VBA soll ja nur auf dem Tabellenblatt Karte funktionieren udn nun bleiben alle Formen grün :(

Private Sub Worksheet_Calculate()
Dim shpe As Shape
Dim Zelle As Range
Dim Meldung As String

For Each shpe In Me.Shapes
    Set Zelle = Columns(1).Find(what:=shpe.Name, LookIn:=xlValues, lookat:=xlWhole)
    If Not Zelle Is Nothing Then
        shpe.Fill.ForeColor.RGB = fctFarbe(Zelle.Offset(0, 2).Value)
    Else
        Select Case shpe.Name
            Case "Picture 2"
            Case Else
                Meldung = Meldung & vbLf & "- " & shpe.Name
                shpe.Fill.ForeColor.RGB = RGB(200, 200, 200)
        End Select
    End If
Next
If Meldung <> "" Then
    MsgBox "F?r folgende Shapes konnte keine Datenzeile gefunden werden:" & vbLf _
          & Meldung & vbLf & vbLf _
          & "Bitte pr?fen sie die Schreibweisen von Shape-Namen und Text in Spalte A:"
End If
End Sub
Private Function fctFarbe(dblWert As Long) As Long
     If dblWert >= 50 Then
         fctFarbe = RGB(255, 0, 0)                  'rot
     ElseIf dblWert >= 34 And dblWert < 50 Then
         fctFarbe = RGB(255, 127, 0)                'orange
     ElseIf dblWert >= 20 And dblWert < 34 Then
         fctFarbe = RGB(255, 255, 0)                'gelb
     ElseIf dblWert >= 0 And dblWert < 20 Then
         fctFarbe = RGB(0, 255, 0)                  'grün
     Else
         fctFarbe = RGB(255, 255, 255)
     End If
End Function


Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Sebastian
Geschrieben am: 22.10.2020 13:08:00

jetzt bleiben alle grün, das mit Case hab ich verstanden :(

Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Sebastian
Geschrieben am: 22.10.2020 13:19:43

hier die Datei :(

https://docs.google.com/spreadsheets/d/1O5D5eZuDj-90QUUhiDJnUFbn5mPr0r06T1Up_0YvWsE/edit?usp=sharing

Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Daniel
Geschrieben am: 22.10.2020 13:42:46

Hi
kannst du die Datei mit dem Makro bitte hier im Forum hochladen?
das GoogleDocs lässt mich die Datei nur als xlsx runter laden und das bringt ja nichts.
Gruß Daniel

Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Daniel
Geschrieben am: 22.10.2020 13:47:28

Hi
in deiner Beispieldatei standen die Werte für Farbe in Spalte C (also mit der Formel)
in deiner neuen Datei ist die Spalte C jedoch leer und du hast die Formeln nach Spalte B verschoben.
das musst du im Code natürlich anpassen.
hast du den Code soweit verstanden, dass du das selber hinbekommst?
Gruß Daniel

Betrifft: AW: VBA Fehler 13 Typen unverträglich
von: Sebastian
Geschrieben am: 22.10.2020 14:36:09

Ach da geht es jetzt :) Kopf auf Tischplatte klatsch

Beiträge aus dem Excel-Forum zum Thema "VBA Fehler 13 Typen unverträglich "