Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1192to1196
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Unicode in Replace-Funktion

Unicode in Replace-Funktion
Michael
Hallo,
ich brauche ein sich auf Knopfdruck übersetzendes Excel-Sheet. Inhalt ist immer der selbe, bloß die Kunden kommen von überall her, die das lesen sollen.
Mein Code (mit Hilfe aus dem Forum):
[...] ElseIf Sheet1.Range("Language").Value = "Russian" Then
arrSrc = wsDict.Range("D2:D68").Value
For iI = LBound(arrSrc) To UBound(arrSrc)
Sheet1.Range("A1:N500").Replace What:=arrSrc(iI, 1), _
Replacement:=arrFind(iI, 1), LookAt:= _
xlPart, SearchOrder:=xlByColumns, MatchCase:=True, SearchFormat:=False, _
ReplaceFormat:=False, MatchByte:=True
Next
End if

funktioniert, sind die Suchwerte Englisch oder Deutsch. Jetzt muss der aber auch noch Russisch können. Die kyrillischen Wörter als Referenz aus dem Tabellenblatt wsDict als Find-Array zu setzen ist erfolgreich. Sollen diese aber Inhalt des Such-Arrays sein, krieg ich einen Type Mismatch-Fehler.
Excel versteht doch kyrillisch, wenn ich die Suchen-Ersetzen-Funktion aus Excel heraus lade :O
Jemand eine Idee?
Gruß

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Unicode in Replace-Funktion
20.12.2010 22:39:48
Michael
Die zwei Arrays arrSearch und arrFind sind Long definiert. Liegt es daran? Welche Definition kann Unicode in Arrays laden?
Wäre nett, wenn jemand ein Feedback für mich hätte.
AW: Unicode in Replace-Funktion
21.12.2010 08:51:33
ransi
HAllo
Die zwei Arrays arrSearch und arrFind sind Long definiert.
Wenn ich mir jetzt deinen Codeschnipsel anschaue:
Sheet1.Range("A1:N500").Replace What:=arrSrc(iI, 1), _
Replacement:=arrFind(iI, 1)

Sollen da wirklich Zahlen getauscht werden ?
ransi
AW: Unicode in Replace-Funktion
21.12.2010 09:42:06
Michael
Hallo Ransi
und danke für die Antwort. Nein, dort sollen Wörter getauscht werden. Das Excel WB soll sich quasi selbst übersetzen. Ich denke, es liegt an der Variablendefinition.
Wie muss ich die beiden Arrays definieren, damit sie Wörter aufnehmen (lateinische und kyrillische Schriftzeichen)?
Gruß Michael
Anzeige
AW: Unicode in Replace-Funktion
21.12.2010 11:00:29
ransi
HAllo
Ich brauch was zum Testen.
KAnnst du mal ne schlanke Beispieldatei hochladen ?
ransi
AW: Unicode in Replace-Funktion
21.12.2010 11:28:21
Michael
https://www.herber.de/bbs/user/72758.xlsm
Drei Formulare: "Deutsch","Englisch" und "Russisch". Bei mir sind das IRibbonControls. Rufe sie bitte als Makro auf. Probier mal erst Englisch und Deutsch, das sollte funktionieren. Russisch hingegen macht er nicht.
AW: Unicode in Replace-Funktion
21.12.2010 12:50:40
ransi
HAllo
Erstmal:
Dim arrSrc1, arrFind1, iI1 As Long

Da ist nnur iI1 as long.
Die anderen beidsen sind as variant
Keine Ahnung warum ein Array das russisch nicht mag.
Ist aber auch egal.
Mach das einfach über die Text-Eigenschaft des Range-Objectes.
Teste mal dies:
' **********************************************************************
' Modul: Russisch Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Sub Russian()
    Dim wsBegin As String
    Dim i As Integer
    Dim arrSrc1 As Variant
    Dim arrFind1 As Range '##
    Dim iI1 As Long
    
    
    Set wsDict = Sheet10
    Sheet3.Select
    
    Columns("B").Hidden = True
    Columns("C").Hidden = True
    Columns("D").Hidden = False 'Da stehen die Sachen auf Russisch drin
    
    Select Case Sheet3.Range("Language").Value
        Case "German"
            arrSrc1 = wsDict.Range("B72:B78").Value
            Set arrFind1 = wsDict.Range("D72:D78")
            For iI1 = LBound(arrSrc1) To UBound(arrSrc1)
                Sheet3.Range("A1:P500").Replace What:=arrSrc1(iI1, 1), _
                    Replacement:=arrFind1(iI1, 1).Text, LookAt:= _
                    xlPart, SearchOrder:=xlByColumns, MatchCase:=True, SearchFormat:=False, _
                    ReplaceFormat:=False, MatchByte:=True
            Next
        Case "English"
            arrSrc1 = wsDict.Range("C72:C78").Value
            Set arrFind1 = wsDict.Range("D72:D78")
            For iI1 = LBound(arrSrc1) To UBound(arrSrc1)
                Sheet3.Range("A1:P500").Replace What:=arrSrc1(iI1, 1), _
                    Replacement:=arrFind1(iI1, 1).Text, LookAt:= _
                    xlPart, SearchOrder:=xlByColumns, MatchCase:=True, SearchFormat:=False, _
                    ReplaceFormat:=False, MatchByte:=True
            Next
        Case Else:
            MsgBox "Mach was anderes"
    End Select
    Sheet3.Range("Language").Value = "Russian"
End Sub

ransi
Anzeige
AW: Unicode in Replace-Funktion
21.12.2010 13:11:26
Michael
Super! Funktioniert prima.
Ransi, vielen Dank! Und auch noch schöner gemacht, den Code ;-)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige