Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Excel / VBA - Auto data jeżeli dane oraz data jeżeli symbol x

projectorEL 15 Jul 2014 09:50 2127 9
  • #1
    projectorEL
    Level 11  
    Witam !
    Potrzebuję zrobić makro które wstawi datę w kolumnie powiedzmy B kiedy w A będą dane, natomiast kiedy wstawię ""x"" w kolumnie C to wstawi dodatkową datę w kolumnie D.
    Wstawianie dat działa, natomiast jak zrobić aby po edycji całości i np skasowaniu danych i wyników, nie wywalało błędu i informacji o debugowaniu, brakuje mnie wiedzy o składni VBA

    Quote:

    Private Sub Worksheet_Change(ByVal Target As Range)

    With Target
    If .Column = 2 Then
    Cells(.Row, 15).Value = Now
    .Offset(0, 9).Value = Environ("UserName")
    End If
    End With

    With Target
    If .Column = 12 And Target.Value = "x" Then
    Cells(.Row, 16).Value = Now
    End If
    End With

    End Sub


    walczę którąś noc i nic ...
  • #2
    JRV
    VBA, Excel specialist
    Witaj
    Sądząc z tego makra, chodzi o kolumna B, L, O i P.
    Jaki błąd wywala?
  • #3
    projectorEL
    Level 11  
    Witam.
    błąd to:
    Quote:
    Run-time error'13':
    Type mismatch

    i zaznacza linie
    Quote:
    If .Column = 12 And Target.Value = "x" Then

    w momencie kasowania hurtowo wypełnionych testowych komórek.
    Jeszcze to może pomóc: w wierszu w którym usuwam dane wstawia mi kilku krotnie login username

    i ja pomysłu nie mam co jest nie tak.
    A wracając do pierwszego posta tak kolumny to B,L,O,P, pewnie to niema żadnego znaczenia, a moje A,B,C,D podałem dla prostego wyjaśnienia o co mi chodzi.

    (arkusz ma tworzyć listę zlecanych prac, oraz od haczyć już załatwione symbolem x ...
    pozdro projectorEL
  • #4
    Maciej Gonet
    VBA, Excel specialist
    Dobry wieczór,
    Podejrzewam, że problem wynika stąd, że przy masowym kasowaniu danych Target składa się z wielu komórek, a procedura zdarzeniowa przewiduje obsługę tylko jednej komórki.
    Proponuję dopisać na początku procedury:
    Code: vbscript
    Log in, to see the code

    Może to wystarczy. Pozdrowienia.
  • #5
    projectorEL
    Level 11  
    Witam
    he he dziękuje działa, a teraz chciałbym jeszcze przekreślić dane z kolumn od B do J kiedy wstawiam x, jakiego zdarzenia poszukać....

    w załączeniu plik
  • #6
    Maciej Gonet
    VBA, Excel specialist
    Ale co to znaczy "przekreślić"? Z załącznika nie wynika jak miałoby to wyglądać. Oczywiście jeśli ma to być konsekwencją umieszczenia znaku "x" w kolumnie L, to powinno być w obsłudze zdarzenia Change.
    Czy to przekreślenie ma polegać na dodaniu atrybutu przekreślenia do tekstu w komórkach? W komórkach pustych też? Nic nie będzie widać, dopóki nie wstawi się jakiegoś tekstu. Czy może chodzi o umieszczenie jakiejś kreski w komórkach?
    I czy to ma być działanie jednorazowe i na stałe, czy z możliwością cofnięcia?
    I co w przypadku gdyby później te komórki były edytowane, czy to przekreślenie ma być czy nie? Nie wiem do czego miałoby to służyć. Może prościej zrobić jakieś formatowanie warunkowe?
    Pozdrowienia.
  • #7
    projectorEL
    Level 11  
    aaaa tyle opcji to juz się zgubiłem takie przekreslenie jakie można zrobić poprzez bold italic underline czy też właśnie strikeline. albo zmienić kolor na szary. optymalnie byłoby gdyby kasujac x znikalo przekreslenie jak równie data wstawiona we wcześniejszym poście.

    proEL
  • Helpful post
    #8
    Maciej Gonet
    VBA, Excel specialist
    Dobry wieczór,
    Proszę sprawdzić, czy o to chodziło. Procedura reaguje na wpisanie małego "x" w kolumnie L. Zarówno skasowanie tego wpisu, jak i wpisanie tam czegokolwiek innego usuwa datę i przekreślenie.
    Pozdrowienia.
  • #9
    projectorEL
    Level 11  
    serdecznie dziękuje, tak to o to chodziło, działa OK.

    Powiem więcej, zamierzam skorzystać jeszcze z pomocy w sprawie rozwiązania kilku kwestii, m in. kolumna B miała by być wynikiem działania z innego arkusza, opiszę to po powrocie z weekendu lub w trące co nieco w trakcie.
    (samo B1 =Arkusz1/B1 nie działa dla makra z datą początkową)

    Pozdrawiam i jeszcze raz dziękuje za poświęcony czas i pomoc

    projectorEL
  • #10
    projectorEL
    Level 11  
    Witam ponownie
    pytanie czy aby zająć się nowym zagadnieniem tj wprowadzania danych za pomocą jednego arkusza do drugiego arkusza kolejno po sobie oraz zapisywania danych na kolejnych arkuszach powinienem utworzyć nowy temat?

    sprawa dotyczy w dalszym ciągu tego samego pliku ale innej sprawy.
    Najgorsze jest to że nie mam pojęcia jakby to mogło działać aby jednocześnie wstawiało automatycznie datę dla nowego wpisu w kolumnie B w przypadku mojego pliku na tej stronie (dziękuje jeszcze raz Panu użytkownikowi Maciej Gonet)
    Krótko krok po kroku:
    Arkusz1 wisuje Paczka1
    na ArkuszuDataINOUT pojawia się wpis w kolumnie B (pierwszej wolnej) Paczka1
    Arkusz1 wisuje Paczka2
    na ArkuszuDataINOUT pojawia się wpis w kolumnie B (pierwszej wolnej) tj. pod Paczka1 ( z nową datą w danym wierszu)

    jest to możliwe???

    pozdro projEL