logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

VBA - jak uruchomic makra tylko w wybranym arkuszu przy pomocy przycisku

Hewa 07 Lut 2013 15:13 3768 4
REKLAMA
  • #1 11901001
    Hewa
    Poziom 9  
    Posty: 9
    Mam taki problem.

    Chciałbym żeby przy pomocy przycisku (CommandButton) umieszczonego w Arkuszu1 można było uruchomić działanie makr w wybranym arkuszu , np. w Arkuszu2.

    Jaki kod muszę wpisać w kodzie poszczególnych makr lub w kodzie przycisku żeby to działało.
  • REKLAMA
  • #2 11904715
    Maciej Gonet
    Specjalista - VBA, Excel
    Posty: 2207
    Pomógł: 824
    Ocena: 481
    Dzień dobry,
    Nie wiem dokładnie co to makro miałoby robić, jeśli odwołuje się do obiektów z docelowego arkusza to można całość objąć instrukcją With:

    With Worksheets("Arkusz2") 'tu nazwa docelowego arkusza
    ' .... kod makra
    End With

    W kodzie makra nazwy tych obiektów, które odnoszą się do arkusza docelowego należy poprzedzić kropką, to znaczy np.
    .Range("A2") będzie oznaczać komórkę A2 z Arkusza2, a Range("A2") bez kropki będzie oznaczać komórkę A2 z arkusza aktywnego, czyli w tym przypadku Arkusza1.
    Być może to wyjaśnienie nie jest wystarczające, ale trudno mi więcej zaproponować, gdy nie wiem co to makro ma robić i do czego się odwołuje.
  • REKLAMA
  • #3 11908074
    Hewa
    Poziom 9  
    Posty: 9
    Poniżej podaję kody moich czterech makr które chciałbym uruchomić z Arkusza1 a działanie tych makr miałoby się odbywać tylko w Arkuszu2.
    Co muszę w tych kodach zmodyfikować ?



    Sub LoopRange()
    x = 1
    Do While Cells(x, 8).Value <> ""
    Cells(x, 8).Select
    Selection.Copy
    Cells(x, 8).Select
    Selection.PasteSpecial Paste:=xlPasteValues
    x = x + 1
    Loop
    x = 1
    Do While Cells(x, 7).Value <> ""
    Cells(x, 7).Select
    Selection.Copy
    Cells(x, 7).Select
    Selection.PasteSpecial Paste:=xlPasteValues
    x = x + 1
    Loop
    x = 1
    Do While Cells(x, 6).Value <> ""
    Cells(x, 6).Select
    Selection.Copy
    Cells(x, 6).Select
    Selection.PasteSpecial Paste:=xlPasteValues
    x = x + 1
    Loop
    x = 1
    Do While Cells(x, 5).Value <> ""
    Cells(x, 5).Select
    Selection.Copy
    Cells(x, 5).Select
    Selection.PasteSpecial Paste:=xlPasteValues
    x = x + 1
    Loop
    x = 1
    y = x + 1
    Do While Cells(x, 1).Value <> ""
    Do While Cells(y, 1).Value <> ""
    If (Cells(x, 1).Value = Cells(y, 1).Value) And (Cells(x, 4).Value = Cells(y, 4).Value) Then
    Cells(y, 1).EntireRow.Delete
    Else
    y = y + 1
    End If
    Loop
    x = x + 1
    y = x + 1
    Loop
    End Sub


    Sub Zawartosc()
    For Each MyCell In Range("H1:H1200")
    If MyCell.Value Like "0" Then
    MyCell.EntireRow.ClearContents
    End If
    Next
    End Sub


    Sub Usuwanie()
    ost_wiersz = Range("A" & Rows.Count).End(xlUp).Row
    For i = ost_wiersz To 1 Step -1
    If Cells(i, 1).Value = "" Then
    Rows(i).Delete shift:=xlUp
    End If
    Next i
    End Sub


    Sub Wstaw()
    x = 1
    Do While Cells(x, 1).Value <> ""
    Cells(x, 1).EntireRow.Insert
    Loop
    End Sub
  • REKLAMA
  • #4 11908583
    PRL
    Poziom 41  
    Posty: 6885
    Pomógł: 953
    Ocena: 891
    Na stałe przypisany arkusz:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Wybierany dynamicznie:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Wybierany ręcznie:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    W Twoim przypadku, tak zrozumiałem, masz na każdym z arkuszy przycisk, który uruchamia to samo makro.
    Skoro tak, to najlepsze będzie trzecie rozwiązanie.

    Pozwoliłem sobie poprawić Twój kod, żeby był czytelniejszy.

    Kod: text
    Zaloguj się, aby zobaczyć kod
    Pomogłem? Kup mi kawę.
  • #5 11912499
    Hewa
    Poziom 9  
    Posty: 9
    Działa.
    Dzięki za pomoc.
REKLAMA