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 - Automatyczna data. Jak to zrobić?

05 Lip 2010 15:18 11954 11
  • Poziom 9  
    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????
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
  • Poziom 40  
    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ć?
  • Poziom 9  
    tzn? jak dokladniej to zrobic, za pomoca makra...????
  • Pomocny post
    Poziom 40  
    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
  • Poziom 9  
    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??
  • Poziom 40  
    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
  • Poziom 10  
    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.

    Cytat:

    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 ...
  • Poziom 9  
    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?
  • Poziom 40  
    Tak samo jak w powyższych przykładach.
    Ale na marginesie:
    W tej samej komórce?
    5 12:15:38 ?
  • Poziom 9  
    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.
  • Poziom 40  
    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.

    Kod: vb
    Zaloguj się, aby zobaczyć kod