WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   VBA: Variablen - bitte um Hilfe (http://www.wcm.at/forum/showthread.php?t=139642)

Kasparov 18.07.2004 11:26

VBA: Variablen - bitte um Hilfe
 
Liebe Gemeinde,

hab diese Frage schon bei "Software" gepostet, wo ich nicht wirklich geholfen wurde (hab erst später gesehen dass es hier auch einen Punkt mit "Programmierung" gibt :rolleyes: sorry fürs crossposting)

Es geht um folgendes Problemchen, das für mich als Nicht-Programmierer ein echtes Problem ist :confused::confused::confused: :

Ich würde gerne einen sehr langen Text (in Word 2002) mit englischer Schachnotation in deutsche umwandeln, z.B. "21.Qh4 Ne3" in "21.Dh4 Se3".

Ein einfaches Makro mit suche - ersetze geht nicht, da im Text auch viele Kommentare vorkommen, die sonst auch ersetzt werden würden.

Am besten wäre das Schema:

ersetze alle N<a bis h><1 bis 8> durch S<a bis h><1 bis 8> (Springer)
ersetze alle B<a bis h><1 bis 8> durch L<a bis h><1 bis 8> (Läufer)
ersetze alle R<a bis h><1 bis 8> durch T<a bis h><1 bis 8> (Turm)
ersetze alle Q<a bis h><1 bis 8> durch D<a bis h><1 bis 8> (Dame)

Vielleicht ginge das so?:

Für alle a, b, c, d, e, f, g, h setze die Variable X
Für alle 1, 2, 3, 4, 5, 6, 7, 8 setze die Variable Y

Dann suche nach Kombination NXY und ersetze mit SXY (Springer)
Dann suche nach Kombination BXY und ersetze mit LXY (Läufer)
Dann suche nach Kombination RXY und ersetze mit TXY (Turm)
Dann suche nach Kombination QXY und ersetze mit DXY (Dame)

Wie gesagt habe ich keine Ahnung vom Programmieren - bitte eine Antwort für Dummies :D

DANKE

xlazarus 18.07.2004 12:07

Also ich bin mir nicht sicher, was du konkret machen willst, aber wenns nur um das ersetzen gewisser Zeichen mit anderen geht ....

Erstelle dir 2 String-Arrays
Dim arr1(20) as String
Dim arr2(20) as String
(für 20 Einträge ... 0 - 19 = Index)

... dann schreibst du einfach in das eine die deutsche Notation:
arr1(0) = "was auch immer"
und ins andere die Übersetzung:
arr2(0) = "what ever"
, aber immer an der gleichen Position.
das nächste dann
arr1(1) = ....
arr2(1) = ... usw.

Dann einfach im Programm die Texte durchgehen und immer vergleichen, und wenns passt dann ersetzen wenn gefunden an der Stelle arr1(x) mit dem String im arr2(x) ... und das wars.

Das ganze halt in eine sinnvolle for oder while Schleife einbauen.

ok!

Falls du es noch genauer haben willst, dann sag's einfach.


XL

flinx 18.07.2004 12:59

Bitte nur 1 Thread. ;) :)
http://www.wcm.at/forum/showthread.php?threadid=140577

Noerf 18.07.2004 13:01

Ich hab von VBA zwar kein Ahnung, aber es wird da doch bestimmt irgendeine Möglichkeit geben Reguläre Ausdrücke zu Verwenden, das wäre ,glaube ich, die einfachste Lösung.

wbendl 19.07.2004 15:30

Hi!

Das könnte heikel werden. Ausgehend von deinem Beispiel ("21.Qh4 Ne3")würde ich so vorgehen:

1. Nach einem Punkt suchen

2. Prüfen ob der Punkt in einem zu bearbeitenden Text-Teil steht
Vom Punkt nach links nur Ziffer bis zum Hochkomma
Vom Punkt nach rechts Groß, Klein, Ziffer, Blank, Groß, Klein,
Ziffer, Hochkomma.

3. Falls nötig Buchstaben ersetzen.

Das Problem ist die Regel, die den String identifiziert. Wenn die einen Denkfehler enthält ist die Datei hin.
Also nur auf eine Kopie arbeiten, und die Regel mit Probieren entwickeln und verbessern.

Durchschaubarer wird es, wenn du den Text Zeilenweise abarbeitest.

mfg

WB


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag