X

Excel - Automatyczna data. Jak to zrobić?

05 Jul 2010 15:18 OSOSAnaMIOD
  • #1 05 Jul 2010 15:18
    OSAnaMIOD
    Level 7  
    Helpful post? (0)
    Witam mam taki problem, chce zrobić tak, ze jeżeli wprowadzę w jednej komórce jakąś wartość to w komórce obok pojawi sie mi data. która pozostanie nie zmienna..

    próbowałem robić to tak:
    JEŻELI(CZY.PUSTA(C11);"";JEŻELI(B11="";TERAZ();B11))
    ze zmian iteracji ze 100 na 1... i niby wszystko ok ale za każdym razem co odpalam arkusz to misie ta iteracja zmienia , dodam jeszcze ze sam arkusz ma być na serwerze, i będzie otwierana na kilku komputerach... i wówczas trzeba będzie za każdym razem zmienia te iteracje..

    wie może ktoś jak to inaczej zrobic????
  • #2 05 Jul 2010 17:15
    marek003
    Level 39  
    Helpful post? (0)
    Za pomocą makra wprowadzaj w daną komórkę datę.

    Wszystkie funkcje w excelu są automatycznie aktualizowane/przeliczane przy otwieraniu pliku - no chyba że wyłączysz automatyczne przeliczanie dla arkusza (przestawisz na ręczne i wyłączysz przelicz przed zapisem) . Arkusz będzie wtedy przeliczany/aktualizowany tylko po naciśnięciu F9

    Excel - Automatyczna data. Jak to zrobić?
  • #3 05 Jul 2010 17:49
    OSAnaMIOD
    Level 7  
    Topic author Helpful post? (0)
    tzn? jak dokladniej to zrobic, za pomoca makra...????
  • Helpful post
    #4 05 Jul 2010 19:36
    marek003
    Level 39  
    Helpful post? (0)
    W edytorze makro w danym arkuszu (worksheets) w sekcji Change wpisz:

    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
    

    If Range("c11").Value <> "" And Range("b11").Value = "" Then
           
            Range("d11").Value = Now()
    Else
            Range("d11").Value = ""
    End If

    End Sub


    Sugerowałem się tym twoim "jeżeli". Czyli jeżeli pusta C11 to nic nie rób, a jeżeli coś jest w c11 to jeżeli równocześnie B11 jest pusta to podaj datę a jeżeli w c11 coś jest i w b11 też coś jest wtedy też nie rób nic. Oczywiście jeżeli zmienisz "ustawienia" data zostanie wyczyszczona (to część kodu po "else"). Jeżeli ma nie być czyszczenia daty po dopisaniu np jakiejś wartości w b11 wtedy wystarczy wykasować tą część kodu
    Code:
    Else
    
            Range("d11").Value = ""
    Poniżej przykład
  • #5 06 Jul 2010 07:34
    OSAnaMIOD
    Level 7  
    Topic author Helpful post? (0)
    a da sie zrobic taki wpis dla wielu komorek?? chodzi mi o to ze w skoroszycie bede mam np. 50 arkuszy w ktorych sa tabelki po 200 pozycji, czy musze pisac osobna regola dla kazdej komurki i dla kazdego arkusz??
  • #6 06 Jul 2010 08:20
    marek003
    Level 39  
    Helpful post? (0)
    Można by spróbować z pętlą i uzależnić wskazania na daną komórkę od numeru pętli - jak znajdę chwilę to pokombinuje.

    Już znalazłem ale z pętlą w tym przypadku się nie da bo się pętla zapętla.

    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
    

    For x = 1 To 200

        If Range("c" & x + 10).Value <> "" And Range("b" & x + 10).Value = "" Then
            Range("d" & x + 10).Value = Now()
       ' Else
        '    Range("d" & x + 10).Value = ""
        End If
    Next x

    End Sub

    Innymi słowy ręcznie wprowadzam wartość, "następuje change", makro wprowadza datę, znów "następuje change" i znowu włącza się pętla i tylko ctrl+break pozostaje.
    Trzeba coś innego wymyśleć.

    Co do poszczególnych arkuszy wystarczy ten pierwszy kod skopiować w "zakres" Change i już gorzej z pisaniem tych 200 pozycji.

    dodano po czasie
    ----------------------------------------------------
    Przed pętlą przedstawiona powyżej trzeba by było dać jeszcze jeden warynek że jeżeli zmianie ulegnie coś w kolumnie b lub c to rób tą pętle - wtedy nie będzie sie zapętlać. Zaraz pokombinuje.


    ZROBIŁEM

    Dla 200 pozycji (column=2 to kolumna B itd) dałem x+10 czyli od wiersza 11 ale można to zmienic - to tylko przykład.

    Code:
    If Target.Column = 2 Or Target.Column = 3 Then
    

      For x = 1 To 200

        If Range("c" & x + 10).Value <> "" And Range("b" & x + 10).Value = "" Then
            Range("d" & x + 10).Value = Now()
        Else
            Range("d" & x + 10).Value = ""
        End If
      Next x
    End If


    Poniżej przykład. W innych arkuszach wystarczy wkleić ten kod w sekcje change
  • #7 14 Jul 2014 23:58
    projectorEL
    Level 9  
    Helpful post? (0)
    odświeżę trochę temat bo potrzebuję pewną wariację takiego przypadku:
    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.

    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

    End Sub

    Ta część kodu działa natomiast jak zrobić aby wstawił dodatkową datę kiedy zaznaczę (wpisze X) w innej kolumnie ... to nie wiem, brakuje mnie wiedzy o składni VBA
    walczę którąś noc i nic ...
  • #8 23 Jan 2015 13:00
    slay70
    Level 9  
    Helpful post? (0)
    Witam, a wiecie może jak zrobić - żeby w komurce, w której wpisałem jakąś cyfrę (wartość) pojawiła się aktualna godzina tego wpisu?
  • #9 23 Jan 2015 14:27
    marek003
    Level 39  
    Helpful post? (0)
    Tak samo jak w powyższych przykładach.
    Ale na marginesie:
    W tej samej komórce?
    5 12:15:38 ?
  • #10 28 Jan 2015 14:36
    slay70
    Level 9  
    Helpful post? (0)
    Właściwie, to nie do końca... (po przemyśleniach). Chodzi mi o to, że mam tabelę, w której muszę np. odnotować w wierszu od A1 do H1 kolejne dostawy towaru, w wierszu od A2 do H2 ma się pojawić czas ich wpisu. I takich kategorii (jak A1) mam kilka tzn: A1, A3, A5 itd. - i tu mam problem :(

    W załączniku tabela.
  • #11 28 Jan 2015 20:02
    marek003
    Level 39  
    Helpful post? (0)
    Słuchaj: jest tysiące przykładów rozwiązań zrobienia tego co chcesz. Wystarczyłoby trochę inwencji.
    Tu masz przykład dość toporny (bo na szybko) ale łatwo załapać o co w nim chodzi - dla pierwszych czterech wierszy. Myślę, że załapiesz jak go poszerzyć na kolejne wiersze.

    Swoją drogą to tłumaczyć problemu to Ty mnie umiesz. Co ma twój opis do załącznika? Załapałem po innym wątku.

    Trzecia rzecz: na przyszłość otwieraj własne wątki, a nie podpinasz się i to w dodatku z czymś innym, pod dość stare wątki.

    Code: vb
    Log in, to see the code
  • #12 29 Jan 2015 02:14
    slay70
    Level 9  
    Helpful post? (0)
    Dziękuję za odpowiedź i pomoc - jednak po północy execl przestał wstawiać czas... Twoje uwagi odnośnie niezdarnego tłumaczenia i robienia bałaganu na forum - oczywiście jak najbardziej na miejscu. Przenoszę temat do: http://www.elektroda.pl/rtvforum/viewtopic.php?p=14379193#14379193
  Search 4 million + Products
Browse Products