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

Dieses Thema Word Makro (VBA) Array: Homepages zum Lernen?? im Forum "Windows XP Forum" wurde erstellt von simon 123, 17. Juni 2004.

Thema: Word Makro (VBA) Array: Homepages zum Lernen?? Hallo! Ich quaele mich als Anfaenger (unfreiwillig) noch immer mit meinem Makro, mittlerweile ist es doch zu gross...

  1. 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,

    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
    
     
Die Seite wird geladen...

Word Makro (VBA) Array: Homepages zum Lernen?? - Ähnliche Themen

Forum Datum
Word 2013 VBA: Makro aus einer anderen Datei aufrufen Microsoft Office Suite 16. Juni 2014
Makro zum drucken der ersten Seite von Stck. 200 Word2007 Doc in einem Verz. Windows XP Forum 9. Aug. 2012
Schriftfarbe per Makro in Word 2003 suchen Microsoft Office Suite 28. Nov. 2011
Word Makro kann nicht aufgezeichnet werden Windows XP Forum 12. Apr. 2010
WORD: Makros deaktiviert?? Microsoft Office Suite 16. Apr. 2009