Microsoft Excel

Herbers Excel/VBA-Archiv

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

Syntaxfrage zu Replace | Herbers Excel-Forum


Betrifft: Syntaxfrage zu Replace von: Jörg-HH
Geschrieben am: 25.07.2012 20:28:02

Hallo zusammen
mit dem kleinen Schnipsel hier wollte ich Namen ändern, wenn es denn zuviele sind für Handarbeit. Warum wird die Replace-Zeile rot bemeckert?

Sub NamenÄndern()

Dim nm As Name
Dim nmAlt As Name
Dim nmNeu As Name

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

nmAlt = InputBox("?", "Alter Name oder Namensteil")
nmNeu = InputBox("?", "Neuer Name oder Namensteil")

If Len(nmAlt) <> Len(nmNeu) Then
  MsgBox "bubu"
Else
  For Each nm In ActiveWorkbook.Names
    If Left(nm, Len(nmAlt)) = nmAlt Then
      Application.WorksheetFunction.Replace(nmalt, 1, len(nmalt), nmneu)
    End If
  Next nm
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

  

Betrifft: AW: Syntaxfrage zu Replace von: Gerd L
Geschrieben am: 25.07.2012 20:43:51

Hallo Jörg,

ungetestet.

Sub NamenÄndern()

Dim nm As Name
Dim nmAlt As Name
Dim nmNeu As Name


nmAlt = InputBox("?", "Alter Name oder Namensteil")
nmNeu = InputBox("?", "Neuer Name oder Namensteil")

If Len(nmAlt) <> Len(nmNeu) Then
  MsgBox "bubu"
Else
  For Each nm In ActiveWorkbook.Names
    
      nm.Name = Replace(nm.Name, nmAlt, nmNeu)
      
    End If
  Next nm
End If

End Sub
PS.: Beim Ab- u. Einschalten der "Applications" bist du etwas verrutscht.

Gruß Gerd


  

Betrifft: nicht ganz von: Jörg-HH
Geschrieben am: 25.07.2012 20:51:17

Hi Gerd
stimmt mit den Applications - da hätte ich mich wieder totgesucht :-)

das andre geht noch nicht so - ich will ja nicht ganze Namen ersetzen, sondern Teile davon...

Jörg


  

Betrifft: AW: Neuer Versuch - Neues Glück von: Gerd L
Geschrieben am: 25.07.2012 21:02:32

Hi Jörg,

angetestet, so wurde bei mir aus dem Namen JörgMM dann JörgHH.

Sub NamenÄndern()

Dim nm As Name
Dim nmAlt As String
Dim nmNeu As String


nmAlt = InputBox("?", "Alter Name oder Namensteil")
nmNeu = InputBox("?", "Neuer Name oder Namensteil")

If Len(nmAlt) <> Len(nmNeu) Then
  MsgBox "bubu"
Else
      For Each nm In ActiveWorkbook.Names
          nm.Name = Replace(nm.Name, nmAlt, nmNeu)
      Next nm
End If


End Sub
Gruß Gerd


  

Betrifft: :-) gleiches Problem von: Jörg-HH
Geschrieben am: 25.07.2012 21:10:31

ich möchte nicht einen Namen durch einen anderen ersetzen, sondern Teile davon

ich hab viele Namen mit Indizes: Meier11, Meier12, Meier13... Meier21, Meier22, Meier23...

Da möchte ich jetzt Meier durch Muhkuh ersetzen - die Indizes sollen aber erhalten bleiben

:-)


  

Betrifft: Replace ist eine Fkt, da muss links davon ... von: Luc:-?
Geschrieben am: 25.07.2012 22:05:09

…auch was stehen, Jörg,
mit = dazwischen! ;->
Gruß Luc :-?


  

Betrifft: tja, Luc - abschreiben müßte man können... :-) von: Jörg-HH
Geschrieben am: 25.07.2012 23:12:52

hatte das Beispiel aus der Hilfe als Vorlage genommen - da steht auch was von Gleichheitszeichen
jetzt sieht das so aus - kein Fehler, aber macht auch keine Änderung:

Sub NamenÄndern()

'ändert Bereichsnamen

Dim nm As Name
Dim nmAlt As String
Dim nmNeu As String

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
nmAlt = InputBox("Neuer Name oder Namensteil", "Namen ändern")
nmNeu = InputBox("Neuer Name oder Namensteil", "Namen ändern")

If Len(nmAlt) <> Len(nmNeu) Then MsgBox "bubu"

For Each nm In ActiveWorkbook.Names
  If Left(nm, Len(nmAlt)) = nmAlt Then
    nm.Name = Application.WorksheetFunction.Replace(nmAlt, 1, Len(nmAlt), nmNeu)
  End If
Next nm

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub



  

Betrifft: AW: Syntaxfrage zu Replace von: Josef Ehrensberger
Geschrieben am: 25.07.2012 23:24:41


Hallo Jörg,

probiers so.

Sub changeNamesName()
  Dim objName As Name
  Dim strFind As String, strReplace As String
  
  strFind = "Meier"
  strReplace = "Muhu"
  
  For Each objName In ThisWorkbook.Names
    If LCase(objName.Name) Like "*" & LCase(strFind) & "*" Then
      objName.Name = Replace(objName.Name, strFind, strReplace, Compare:=vbTextCompare)
    End If
  Next
  
End Sub






« Gruß Sepp »



  

Betrifft: nebenbei, wozu braucht man so viele Namen? o.T. von: Josef Ehrensberger
Geschrieben am: 25.07.2012 23:26:59

« Gruß Sepp »



  

Betrifft: klappt... von: Jörg-HH
Geschrieben am: 26.07.2012 00:20:40

danke an alle...

so viele Namen...? 25 Checkboxen aus 5 Gruppen zu je 5 Sorten regeln diverse Ein- und Ausblendungen in zehn verschiedenen Blättern. Zusätzlich muß ich noch die Boxen gruppenweise disablen, wenn bestimmte Einstellungen dies wünschen.

Damit bin ich am einfachsten durch, wenn ich in den Blättern Lokalnamen mit Indizes verteile, die mit den Checkbox-Namen samt Indizes korrespondieren. Zumindest fällt mir kein sinnvoller anderer Weg ein.

Grüße - Jörg