Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Excel makro kalkulator - Kod do makro nie działa

08 Lis 2016 23:48 1521 19
  • Poziom 9  
    Witam
    Potrzebuję zrobić niby proste makro, ale utknąłem na kodzie do niektórych elementów.
    W skrócie wygląda to tak: mam arkusz z przyciskiem, do którego jest przypisane makro. Po uruchomieniu makra otwiera się panel z jednym textboxem i trzynastoma przyciskami Commandbotton. Przyciskami od 0 do 9 wprowadzam liczby do textboxa, a pozostałe przyciski to delete i enter lub zapisz. Do tego momentu wszystko mi działa, poza Enterem. Nie potrafię napisać kodu dla Enter, gdzie po wciśnięciu Enter chciałbym by liczba wprowadzona do textboxa była zapisywana i doliczana do wcześniej wprowadzanych liczb w ramce na arkuszu. A okno textbox zostało by wyczyszczone i makro zamknięte. W sumie dane mogą być zapisywane do dowolnej komórki lub komórek w arkuszu Może ma ktoś pomysł jakich funkcji użyć i w jakiej kolejności. Może ktoś robił coś podobnego i mógłby rzucić okiem na załącznik
    Pozdrawiam
  • Specjalista - VBA, Excel
    speedmark napisał:
    textbox zostało by wyczyszczone i makro zamknięte

    Kalkulator ma pozostać na ekranie lub znikają?

    Dodano po 16 [minuty]:

    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 9  
    Witam
    W planie jest by kalkulator po wciśnięciu enter znikał, ale też by zapisywał i sumował każdorazowo podane liczby.
  • Specjalista - VBA, Excel
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 9  
    Wpisałem kod do makra i po wciśnięciu enter znika i nie wywala żadnego błędu.
    Ale nie rozumiem jak jest z zapisem liczby z kalkulatora do jakieś komórki w arkuszu
    byłbym wdzięczny za objaśnienie.
  • Specjalista - VBA, Excel
    speedmark napisał:
    Ale nie rozumiem jak jest z zapisem liczby z kalkulatora do jakieś komórki w arkuszu
    Jak można nie rozumieć, że ty sam napisałes?
    Kod: text
    Zaloguj się, aby zobaczyć kod
    [/code]
  • Poziom 9  
    Niestety nie rozumiem jeszcze VBA dopiero się uczę, motam się metodą prób i błędów
    A propos kodu jednak w dalszym ciągu nie zamyka formularza i ni zapisuje
  • Pomocny post
    Poziom 14  
    JRV napisał:
    speedmark napisał:
    Ale nie rozumiem jak jest z zapisem liczby z kalkulatora do jakieś komórki w arkuszu
    Jak można nie rozumieć, że ty sam napisałes?
    Kod: text
    Zaloguj się, aby zobaczyć kod


    To znaczy:
    Z pierwszego arusza "Sheets(1)" odczytaj komórkę A1 i dodaj do niej liczbę z TextBox1 ("TextBox1.Value" = przekształć tekst na liczbę). Wynik zapisz do pierwszego arkusza "Sheets(1)" do komórki A1 = "Range("A1")

    Można też tak:
    Sheets("Nazwa arkusza").Cells(wiersz,kolumna)=Sheets("Nazwa arkusza").Cells(wiersz,kolumna)+textBox1.Value
  • Poziom 9  
    Tak to ja rozumiem dzięki za wyjaśnienie rozwiało to moją niepewność czy ten kod jest sensownie napisany nie mówiąc już o drobnych błędach.
    A mógłbyś podać jakiej funkcji urzyć gdybym chciał dopisać w kodzie opcję by po wciśnięciu przycisku enter nie tylko zapisał wynik, ale jeszcze automatycznie zamknął formularz.

    Dodano po 16 [minuty]:

    Pavlik71 Brawooo Ty Dzięki

    Działa dokładnie tak jak chciałem i nawet się zamyka po wciśnięciu Enter
    musiałem chyba to najpierw zrozumieć bo wcześniej coś mi nie chodziło
    jeszcze czasami wyskakuje jakiś błąd ale pokombinuję może będzie ok.

    Pozdrawiam i dzięki za pomoc
  • Poziom 9  
    Witam jeszcze raz nie chce otwierać nowego tematu, a do pełni szczęścia w powyższym arkuszu brakuje mi jakiegoś efektu by było widać że przycisk został wciśnięty. Chodzi o podświetlenie , poszarzenie, rozciągnięcie lub zmianę koloru oczywiście w momencie najechania kursorem na przycisk w arkuszu.
    Wszystkie mądre rady i kody mile widziane
    Pozdrawiam
  • Pomocny post
    Poziom 14  
    Mam rozwiązanie.
    Niech klawisz "0" nazywa się "C0"
    wtedy:
    Code:
    Private Sub C0_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    
    C0.BackColor = &H80000010 ' Zmieniamy kolor przycisku
    End Sub

    Dla klawisza "1", który nazywa się "C1"
    Code:
    Private Sub C1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    
    C1.BackColor = &H80000010 ' Zmieniamy kolor przycisku
    End Sub

    Ale aby po "zjechaniu z przyciku strzałką" znów stał się "normalny" należy zrobić to:
    Code:
    Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    
    C0.BackColor = &H8000000F
    C1.BackColor = &H8000000F
    C2.BackColor = &H8000000F
    C3.BackColor = &H8000000F
    C4.BackColor = &H8000000F
    C5.BackColor = &H8000000F
    C6.BackColor = &H8000000F
    C7.BackColor = &H8000000F
    C8.BackColor = &H8000000F
    C9.BackColor = &H8000000F
    Delete.BackColor = &H8000000F
    Zapisz.BackColor = &H8000000F
    Enter.BackColor = &H8000000F
    End Sub


    Czyli wskazując wskaźnikiem myszki cały kalkulator, zamień wszystkie przyciski na kolor standardowy.

    Numer kolorów kopiowałem z okna właściwości obiektu. Kalkula...xls Download (30 kB)
  • Poziom 9  
    Dzięki po raz kolejny

    Dokładnie o coś takiego mi chodziło
    Mimo ograniczonych kolorów we właściwościach wygląda to
    o wiele lepiej i lepiej widać który klawisz chcę wcisnąć

    Pozdrawiam i dziękuję

    Dodano po 23 [minuty]:

    Hej a mógł byś rzucić okiem na kod twojego załącznika

    Po wciskaniu przycisków, w przycisku który był ostatni wciśnięty
    pozostaje przy nim zaznaczenie. Pokazuje się też przy uruchomieniu
    kalkulatora na przycisku "0" Próbuję je wyeliminować ale mi nie wychodzi.

    Dodano po 5 [godziny] 29 [minuty]:

    Chciał bym zastosować identyczny efekt dla przycisku "CommandButton" znajdującego się na arkuszu ale przy użyciu powyższego kodu działa mi tylko w jedną stronę czyli zmienia kolor po najechaniu kursorem i tak już zostaje i nie wiem gdzie jest błąd. Ma ktoś rade na to:

    Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    CommandButton1.BackColor = &H80000010
    End Sub

    Private Sub Activesheets1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    CommandButton1.BackColor = &H8000000F
    End Sub
  • Poziom 9  
    Panowie mógłby ktoś zmodyfikować ten kod lub może podesłać jakieś inne rozwiązanie bardzo proszę muszę na dniach skończyć tą zabawę.
  • Specjalista - VBA, Excel
    Gdzie jest zalacznik? Bez tego nic nie jasne.
  • Poziom 9  
    Witam załączam Arkusz testowy
    W załączonym pliku przycisk 1 otwiera formularz z przyciskiem który po najechaniu na niego myszą zmienia kolor. zależy mi na osiągnięciu identycznego efektu po najechaniu myszą dla przycisków "1, 2, 3". Przyciski częściowo działają po najechaniu na nie myszą zmieniają kolor ale nie powracają do pierwotnego koloru, nie mogę sobie poradzić z kodem gdyby ktoś mógł go zmodyfikować byłbym wdzięczny

    tak na marginesie jeżeli ktoś ma jakiś przykład w którym obraz na arkuszu jest zamieniany na inny po najechaniu na niego myszką było by super
  • Specjalista - VBA, Excel
    Nie wymyślaj zdarzenia, które nie jest w Excel(Worksheet_MouseMove, Arkusz1_MouseMove, Sheet1_MouseMove :) )
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 14  
    Dobry pomysł JRV.
    We właściwościach przycisków ustaw "TakeFocusOnClick" na False. Zniknie wtedy zaznaczenie ostatniego naciśniętego klawisza.
    Niestety jakiś "Focus" na jakimś elemencie musi być. więc schowaj jakiś dodatkowy klawisz pn. pod textboksem. A na klawisze na arkuszu nie mam pomysłu - jedyny taki:
    Code:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    Otworz_Kalkulator.BackColor = &H8000000F
    End Sub

    Czyli kiedy klikniesz na komórkę w arkuszu, to klawisz powróci do standardowego koloru.
  • Poziom 9  
    Dzięki Panowie za pomoc i wyrozumiałość to moje początki z vba, więc stąd wiele dziwnych pytań na które nie ma odpowiedzi w literaturze. Dzięki waszej pomocy wiele się nauczyłem, jutro powalczę z tymi buttonami i dam znać jak poszło.
  • Poziom 9  
    Witam Panowie dzięki waszej pomocy zbliżam się powoli ku końcowi.
    Zmiana koloru przycisków działa dokładnie tak jak chciałem, tylko czasami przy szybkich ruchach myszką kolor na przycisku się zawiesza. A zaznaczenia na przyciskach kalkulatora nie mogę usunąć co dziwne zawsze przy otwarciu kalkulatora zaznaczony jest przycisk C0 więc zamieniłem go z enterem i teraz enter jest zaznaczony co mi nie przeszkadza. W sumie temat można było by zamknąć ale może ktoś będzie kontynuował.
    Lub może ktoś poruszył temat podmiany pliku obraz na inny obraz po najechaniu myszką na ten pierwszy.
  • Specjalista - VBA, Excel
    speedmark napisał:
    zaznaczenia na przyciskach kalkulatora nie mogę usunąć
    Pavlik71 napisał:
    We właściwościach przycisków ustaw "TakeFocusOnClick" na False