Jak zrobić pętlę ciągową za pomocą VBA?

Witam

Szukam sposobu na zapętlenie różnych wartości wielu zmiennych łańcuchowych  , aby zmniejszyć rozmiar mojego kodu !

Dziękuję za pomoc.

Witam

Nie do końca to rozumiałem.

Aby utworzyć pętlę, jeśli wiesz, ile razy chcesz ją wykonać (na przykład 10), jest to:

- Przykład 1:

Dla i = 1 do 10

      TWÓJ KOD

Następny i

- Przykład 2:

Rób, póki < 10

       TWÓJ KOD

       i = i + 1

Pętla

- Przykład 2:

Robić

       TWÓJ KOD

       i = i + 1

Pętla , podczas gdy ja < 10

Ale jeśli nie znasz liczby i jest ona częścią kolekcji, możesz użyć for each, przykład tutaj:

http://help.solidworks.com/2014/English/api/sldworksapi/Get_Components_in_Each_BOM_Table_Row_VB.htm

 

1 polubienie

Na moim przykładzie, który dobrze znasz, zrozumiesz, co moim zdaniem chcę zrobić, w rzeczywistości chciałbym zastąpić moje linki, moje nazwy części, mep i zespołów (pogrubioną) zmiennymi łańcuchowymi, które zmieniam za każdym razem, gdy zaczyna się pętla, aż nie mam już wartości tekstowej!  

Sub main()
        
Ustaw swApp = _
Aplikacja.SldWorks

Set Part = swApp.OpenDoc6("xxxxxxxxxxxxx.SLDASM", 2, 0, "", longstatus, longwarnings) 'otwieranie zestawu źródłowego'
swApp.ActivateDoc2 'Zestaw do przechowywania garnków', False, longstatus 'włącz zestaw'
Ustaw część = swApp.ActiveDoc 'aktywacja'


F1. Pokaż 'otwieranie okna informacyjnego'


Ustaw swAppp = Application.SldWorks 'powrót do aplikacji solidworks'
Set swmodel = swAppp.ActiveDoc 'Ponowna aktywacja zestawu'
bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "") 'otwieranie okna Zapisz jako'
Set Part = swApp.ActiveDoc 'aktywuj nowy zespół zapisany w nowym folderze'


FilePath = swmodel. GetPathName 'pobieranie linku z zestawu'

TytułA = swmodel. GetTitle 'Pobieranie nazwy z rozszerzeniem zestawu'
TitleAs = Len(TitleA) 'długość przedłużenia pobierania'
TitleAn = Left(TitleA, TitleAs - 7) 'usuń rozszerzenie'


' ******************************************************************************
' Zapis sztuk doniczek magazynowych
' ******************************************************************************

Ustaw część = swApp.ActiveDoc 'aktywacja'
Set Part = swApp.OpenDoc6("\\xxxxxxxxxxx.sldprt", 1, 0, "", longstatus, longwarnings) 'otwieranie części'
Ustaw część = swApp.ActiveDoc 'aktywacja'

swApp.ActivateDoc2 "Pot Tray.sldprt", False, longstatus 'Aktywacja monet z doniczki'
Ustaw część = swApp.ActiveDoc 'aktywacja'

Ustaw swmodel = swApp.ActiveDoc 'aktywacja mep'

TitlePb = swmodel. GetTitle 'pobieranie tytułu z mepa sklepu z doniczkami bez rozszerzenia'

Ustaw część = swApp.OpenDoc6("xxxxxxxx.SLDDRW", 3, 0, "", longstatus, longwarnings) 'otwórz mep'
Ustaw część = swApp.ActiveDoc 'aktywacja'

swApp.ActivateDoc2 "Sklep z doniczkami - Arkusz1", Fałsz, longstatus 'aktywacja mep'
Ustaw część = swApp.ActiveDoc 'aktywacja'

Set swmodel = swApp.ActiveDoc 'aktywacja dla informacji o dokumencie'

TitleM = swmodel. GetTitle 'odzyskiwanie tytułu mep bez przedłużenia'

Ustaw część = swApp.ActiveDoc 'aktywacja'

swApp.ActivateDoc2 "Store pots.sldprt", False, longstatus 'aktywacja części'
Ustaw część = swApp.ActiveDoc 'aktywacja'

Ustaw swAppp = Application.SldWorks 'włącz aplikację solidworks'
Ustaw swmodel = swAppp.ActiveDoc 'aktywacja części'
bool = swmodel. Extension.RunCommand(SwCommands.swCommands_SaveAs, "") 'otwiera okno Zapisz jako'

Ustaw swmodel = swApp.ActiveDoc 'aktywacja mep'

TitleM = swmodel. GetTitle 'odzyskiwanie tytułu mep bez przedłużenia'

PFilePath = swmodel. GetPathName 'pobieranie linku części z rozszerzeniem'
PsFilePath = Len(PFilePath) 'pobieranie długości linku części z rozszerzeniem'
PnFilePath = Left(PFilePath, PsFilePath - 7) 'usunięcie rozszerzenia'
MFilePath = ŚcieżkaPlikuPnFile & ". SLDDRW" 'dodano rozszerzenie dla łączy MEP'

TytułP = swmodel. GetTitle 'pobieranie tytułu pomieszczenia do przechowywania słoików z rozszerzeniem'
TitlePs = Len(TitleP) 'Pobieranie długości przedłużenia'
TitlePn = Left(TitleP, TitlePs - 7) 'usuń rozszerzenie'

Ustaw część = swApp.ActiveDoc 'aktywacja'
Ustaw część = Nic
swApp.CloseDoc TitlePn 'zamknij pokój'
Ustaw część = swApp.ActiveDoc 'aktywacja'

swApp.ActivateDoc2 "Sklep z garnkami - Arkusz1", Fałsz, longstatus 'aktywacja mep'
Ustaw część = swApp.ActiveDoc 'aktywacja'

longstatus = Part.SaveAs3(MFilePath, 0, 2) 'rekord mep'

Ustaw swmodel = swApp.ActiveDoc 'aktywacja mep'
TitleM = swmodel. GetTitle 'Pobieranie tytułu nowego posła bez rozszerzenia'

swApp.CloseDoc TitleM 'close mep'

swApp.ActivateDoc2 TitlePn, False, longstatus 'back to part'
Ustaw część = swApp.ActiveDoc 'aktywacja'
Ustaw część = Nic
swApp.CloseDoc TitlePn 'zamknij pokój'
Ustaw część = swApp.ActiveDoc 'aktywacja'


swApp.ActivateDoc2 TitleAn, False, longstatus 'powrót do zgromadzenia ogólnego (zestaw sklepu z doniczkami)'
Ustaw część = swApp.ActiveDoc

Ustaw część = swApp.ActiveDoc
longstatus = Part.SaveAs3(FilePath, 0, 2) 'Rekord Zgromadzenia Ogólnego (zestaw do przechowywania garnków)'

Ustaw część = swApp.ActiveDoc
Ustaw część = Nic
swApp.CloseDoc Tytuł'Zamknięcie Walnego Zgromadzenia (Zestaw Tacek na Garnki)'


Koniec subwoofera

Więc jeśli dobrze zrozumiałem, po prostu musisz podmienić kod:

Set Part = swApp.OpenDoc6("\\xxxxxxxxxxx.sldprt", 1, 0, "", longstatus, longwarnings) 'otwieranie części'
 

przez:

Set Part = swApp.OpenDoc6(path1, 1, 0, "", longstatus, longwarnings) 'otwórz część'
– I tak dalej dla innych

A swoją pętlę zrobisz tak:

for i = 1 do 3      '(3, jeśli chcesz zapętlić się 3 razy)

    jeśli i = 1, to

         ścieżka 1 = "C:\test 1\"

    else jeśli i = 2 to

         ścieżka 2 = "c:\test 2\"

    else jeśli i = 3 to

         ścieżka 3 = "c:\test 3\"

    Zakończ się, jeśli

    Oto reszta kodu, która powinna zostać uwzględniona w pętli

Następny i

    Oto reszta kodu, która NIE powinna być dołączana do pętli

 

1 polubienie

Subtelny! Postaram się tak, bardzo dziękuję :)

1 polubienie

Nie martw się :)

Aby być czystszym, powinieneś użyć wybranego przypadku zamiast:

    jeśli i = 1, to

         ścieżka 1 = "C:\test 1\"

    else jeśli i = 2 to

         ścieżka 2 = "c:\test 2\"

    else jeśli i = 3 to

         ścieżka 3 = "c:\test 3\"

    Zakończ się, jeśli

Byłoby to:

Wybierz przypadek I

    Ramka 1

         ścieżka 1 = "C:\test 1\"

    Ramka 2

......

 

Zakończ wybór