Word Makro (VBA) Array: Homepages zum Lernen??

  • #1
S

simon 123

Guest
Hallo!
Ich quaele mich als Anfaenger (unfreiwillig) noch immer mit meinem Makro, mittlerweile ist es doch zu gross und unuebersichtlich und ich muss es auf irgend eine Art in eine Schleife einbauen.

Leider habe ich viel zu wenig Kenntnisse dazu, deshalb meine Frage: Wo finde ich hilfreiche Internetseiten, wo Word/Makro/Array erklaert wird?

Vielleicht hat ja auch jmnd von Euch Lust?

Ich habe einen groesseren Ablauf, ein Ausschnitt:

***************************************
Windows(1).Activate
Selection.MoveLeft Unit:=wdCharacter, Count:=100
Selection.MoveUp Unit:=wdLine, Count:=100
Selection.MoveDown Unit:=wdLine, Count:=3
' XXX Dieses Count:=3 soll in der Schleife hochgezaehlt werden
Selection.Find.ClearFormatting
With Selection.Find
.Text = ,
.Replacement.Text =
.Forward = True
End With
Selection.Find.Execute
Selection.Find.Execute
ZeichenEins = Selection.Information (wdFirstCharacterColumnNumber)
Selection.Find.Execute
ZeichenZwei = Selection.Information (wdFirstCharacterColumnNumber)
TextLaenge = ZeichenZwei - ZeichenEins
Selection.MoveLeft Unit:=wdCharacter, Count:=TextLaenge, Extend:=wdExtend
ErsetzText = Selection
Windows(2).Activate
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = &&!--003/--!>
' XXX Und das 003 soll in der Schleife hochgezaehlt werden
.Replacement.Text = ErsetzText
.Forward = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
******************************************************
(der Abschnitt geht zu einer Zeile, markiert den Text zwischen zwei Komma und fuegt in im zweiten Fenster an bestimmter Stelle wieder ein)

Mag mir jemand helfen, wie ich diesen Ausschnitt in eine Funktion bekomme, die automatisch die beiden genannten Bereiche in jedem Durchlauf um +1 erhoeht? Die Schleife soll laufen, bis ein bestimmter Wert (22) erreicht wurde.

Aber, wie gesagt, ich bin mir bewusst, dass ich an der untersten Grenze der Makro-Basics herumkratze und ein guter Link, wo so etwas erklaert wird, hilft mir auch!!

Danke,
Simon
 
  • #2
Hi simon123,

Leider habe ich viel zu wenig Kenntnisse dazu, deshalb meine Frage: Wo finde ich hilfreiche Internetseiten, wo Word/Makro/Array erklaert wird?
Die Erläuterung findes Du in der VB-Hilfe, indem Du in einem Code-Fenster Dim eingibst, markierst und F1(Hilfe) drückst. Dann geht das Hilfe-Fenster auf, welches Variablen und Felder beschreibt.

Auf diese Weise kannst Du dir auch die möglichen Schleifen ansehen, unter den Stichworten:
For
Do
While

In der jeweiligen Hilfeseite ist auch immer ein link->siehe auch' in dem auf verwandte Themen hingewiesen wird.

Eigentlich ist alles in der Hilfe enthalten, was man braucht, nur eben auf den ersten Blick nicht ganz einfach zu finden.

Am Anfang ist es auch sehr hilfreich, sich fertige Makros mit der oben beschriebenen Methode anzuschauen. Wenn man auf einen Befehl trifft, den man nicht versteht, Wort markieren und F1 drücken. Damit lernt man ziemlich schnell den Befehlsvorrat kennen.

Deinen Makro hab ich mal als Beispiel in eine Funktion verpackt. Diese wird von einer Subroutine aufgerufen, die die Variable hochzählt.

Empfehlenswert ist die erste Zeile->Option Explicit', die einen dazu zwingt sämtliche Variablen zu dimensionieren. (Ist auch in der Hilfe erklärt)
Damit vermeidet man manchen schwer zu findenden Fehler.

Wenn Du weitere Fragen hast nur zu ...


Gruß Matjes :)

Code:
Option Explicit

Sub Meine_Funktion_Aufrufen()

  Const c_anf = 3
  Const c_end = 22
  Dim i As Integer, ret As Boolean
  
  For i = c_anf To c_end
    ret = Meine_Funktion(i)
    If ret = False Then
      MsgBox ( _
        Fehler in->Meine_Funktion' & vbCr & vbCr & _
        Abbruch des Makros !)
      Exit Sub
    End If
  Next
End Sub

Function Meine_Funktion(num As Integer) As Boolean

' Die Funktion führt deinen Makro aus.
' Dabei wird num an den mit XXX markierten
' Stellen num als Variable eingesetzt.
' Zunächst prüft die Funktion, ob die Variable
' im Wertebereich 0 <= num <= 999 liegt.
' Liegt der Wert innerhalb des Intervals
' gibt die Funktion True zurueck,
' andernfalls False und die Funktion wird abgebrochen

Dim ZeichenEins As Long, ZeichenZwei As Long, TextLaenge As Long
Dim ErsetzText As String

  If 0 <= num And num <= 999 Then
    Meine_Funktion = True
  Else
    Meine_Funktion = False
    Exit Function->Abbruch
  End If
  Windows(1).Activate
  Selection.MoveLeft Unit:=wdCharacter, Count:=100
  Selection.MoveUp Unit:=wdLine, Count:=100
  Selection.MoveDown Unit:=wdLine, Count:=num
' XXX Dieses Count:=3 soll in der Schleife hochgezaehlt werden
  Selection.Find.ClearFormatting
  With Selection.Find
    .Text = ,
    .Replacement.Text = 
    .Forward = True
  End With
  Selection.Find.Execute
  Selection.Find.Execute
  ZeichenEins = Selection.Information(wdFirstCharacterColumnNumber)
  Selection.Find.Execute
  ZeichenZwei = Selection.Information(wdFirstCharacterColumnNumber)
  TextLaenge = ZeichenZwei - ZeichenEins
  Selection.MoveLeft Unit:=wdCharacter, Count:=TextLaenge, Extend:=wdExtend
 ->### hier soll der markierte Text in ein Variable geladen werden
 ->deshalb ErsetzText = Selection geändert in ...
  ErsetzText = Selection.Text
  Windows(2).Activate
  Selection.Find.ClearFormatting
  Selection.Find.Replacement.ClearFormatting
  With Selection.Find
    .Text = &&!-- & Format(num, 000) & /--!>
' XXX Und das 003 soll in der Schleife hochgezaehlt werden
    .Replacement.Text = ErsetzText
    .Forward = True
  End With
  Selection.Find.Execute Replace:=wdReplaceAll
End Function
 
Thema:

Word Makro (VBA) Array: Homepages zum Lernen??

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.965
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben