Microsoft Excel

Herbers Excel/VBA-Archiv

if Abfrage ändern

Betrifft: if Abfrage ändern von: stef26
Geschrieben am: 15.08.2014 11:28:28

Hallo liebe Forumsbesucher,
habe soeben super Hilfe von der Karin bekommen. DANKE (funktioniert nun mit den geänderten shapes super)

Ich habe die Namen meiner Shapes geändert und nun passt eine Abfrage nicht mehr.
Bisher begannen meine Shape Namen mit
EbeneA xxxxxxxxx (xxx steht für beliebiges Material und hat für die Abfrage keinerlei Bedeutung)
Mit der Abfrage der Ebene, die gleich am Anfang stand war es noch sehr leicht

     If Left(shaShape.Name, 6) = "EbeneA" Then
Dadurch, dass ich nun eine Nummerierung am Anfang in Klammern habe muss ich meine Abfrage ändern, weiß aber nicht wie ich das mache.
Aktuell sehen die shapes so in der Art aus:
(2)EbeneA xxxx
(345)EbeneB xxx usw.
D.h. ich habe keine feste Anzahl der Stellen vorne so dass meine If Abfrage irgendwie anders aufgebaut werden muss...

Liebe Grüße
Stefan

  

Betrifft: AW: if Abfrage ändern von: Beverly
Geschrieben am: 15.08.2014 11:37:43

Hi Stefan,

versuche es einfach mal so:

If Mid(shaShape.Name, InStr(shaShape.Name, ")") + 1, 6) = "EbeneA" Then

GrußformelBeverly's Excel - Inn


  

Betrifft: AW: if Abfrage ändern von: stef26
Geschrieben am: 15.08.2014 17:24:57

100% ins schwarze. Danke nun passen auch meine Abfragen wieder.


Du scheinst dich ja wirklich top auszukennen. Hut ab. Ich hab das leider nie gelernt und versuche
so Schritt für Schritt mich zu verbessern.

Hätte da noch eine unverschämte Frage:
Bei einer bestimmten Bedingung soll zusätzlich der Name
(123)EbebeA xxxxxx
Wenn EbeneA dann auf EbeneB
Wenn EbeneB dann auf EbeneC
ansonsten auf EbeneD geändert werden.

Das mit der Bedingung usw. bekomme ich hin, nur mit dem Finden und ersetzten schaffe ich leider nicht...

Liebe Grüße
Stefan


  

Betrifft: Shaoes umbenennen von: Beverly
Geschrieben am: 15.08.2014 18:38:40

Hi Stefan,

ich weiß nun nicht, wie viele Ebenen es in deinem Projekt geben wird, aber das Aplphabet hat nur 26 Buchstaben. Ich habe den Code deshalb so geschreiben, dass nach Z wieder mit A begonnen wird:

Sub ShapesUmbenennen()
   Dim shaShape As Shape
   Dim strErsatz As String
   Dim bytBuchstabe As Byte
   For Each shaShape In ActiveSheet.Shapes
      ' Name enthält "Ebene"
      If InStr(shaShape.Name, "Ebene") > 0 Then
         ' Buchstabe nach "Ebene" abtrennen
         strErsatz = Mid(shaShape.Name, InStr(shaShape.Name, "Ebene") + 5, 1)
         ' Buchstabe in Ascii-Code umwandeln
         bytBuchstabe = Asc(strErsatz)
         ' Ascii für Großbuchstaben gehen nur bis 90, wenn > dann wieder mit A beginnen
         If bytBuchstabe + 1 > 90 Then
            bytBuchstabe = 65
         ' andernfalls Ascii um 1 erhöhen für nächsten Buchstaben im Alphabet
         Else
            bytBuchstabe = bytBuchstabe + 1
         End If
         ' im Shape-Namen den Buchstaben nach "Ebene" durch neuen ersetzen
         shaShape.Name = Application.Substitute(shaShape.Name, Mid(shaShape.Name, _
            InStr(shaShape.Name, "Ebene") + 5, 1), Chr(bytBuchstabe))
      End If
   Next shaShape
End Sub
Ich habe auch ein paar Kommentare hinzugefügt, damit der Ablauf vielleicht leicher nachzuvollziehen ist.

Übrigens: ich habe Programmieren auch nie gelernt, bin nur Autodidakt. Aber du wirst, denn du dich länger mit VBA beschäftigst, bald festellen: Übung macht den Meister. ;-)


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Shaoes umbenennen von: stef26
Geschrieben am: 16.08.2014 17:22:12

Hallo Karin,
super duper dankeschööön. Habs gerade in meiner Orginal eingehängt und es funktioniert super.

Danke auch für die hilfreichen Kommentare, sind gut für mich um den Code zu verstehen und später mal selber anwenden zu können.

Vielen vielen Dank
und liebe Grüße
Stefan
P.S. klasse Forum


 

Beiträge aus den Excel-Beispielen zum Thema "if Abfrage ändern"