Cze wszystkim Mój problem polega na stworzeniu makra pozwalającego zaraz po otwarciu pliku (w sieci i dla kilku użytkowników), umieścić datę dnia dzisiejszego w żądanej linii, a także kolor użytkownika, który napisał na linii kodyfikację planu.
Dzięki temu możesz śledzić, ile i przez kogo tworzone są plany.
Ponieważ komputer ma określoną nazwę w sieci, użytkownicy, którzy kodują swoje plany w tabeli, będą mogli mieć własny kod kolorystyczny. Czy to możliwe?
Jeśli dobrze rozumiem, co chcesz zrobić: użytkownik otwiera plik Excel, wskazuje numer planu, zamyka plik Excel?
Dlaczego nie wprowadzić daty i nazwy użytkownika w tym samym czasie? Bardzo lubię makra... ale trochę się obawiam, że niepotrzebnie komplikujesz swój plik, prawda?
Derline = Arkusz1.Komórki(1, "B"). Koniec(xlW dół). Wiersz ' Pobierze ostatni niepusty wiersz komórki kolumny "Data" arkusz1 z komórki "B3"
Arkusz1.Cells(Derligne, "B") = Data 'Wprowadzono datę dnia
coul = Cells.Find(Nazwa, Komórki(1, "E")). Interior.ColorIndex 'Pobiera kolor pola z nazwą użytkownika zakres(komórki(derligne, "a"), komórki(derligne, "c")). Interior.ColorIndex = kolor
Koniec subwoofera
Z drugiej strony bądź ostrożny. Nazwa użytkownika musi być RYGORYSTYCZNIE taka sama między plikiem Excela a komputerem, w przeciwnym razie nie może znaleźć (te same spacje, te same wielkie litery itp.).
Nadal uważam, że jest to źródło nudy dla twojej rzeczy!
Dziękuję coin37coin, Nie, nie tkt, to dla uproszczenia pliku Word do ręcznego wypełnienia. Są tacy, którym czasami udaje się popełnić błędy. Kiedy jedziemy za szybko... Dziękuję, testuję to wszystko.
To zaskakujące, wczoraj działało to bardzo dobrze.
Na jakim poziomie blokuje?
Edit: Tyle samo dla mnie, napisała zamiast ostatniej linijki (mała niezgodność)
Sub AutoName()
Nazwa = Application.UserName ' nazwa użytkownika Derline = Arkusz1.Komórki(1, "B"). Koniec(xlW dół). Wiersz ' Pobierze ostatni niepusty wiersz komórki kolumny "Data" arkusz1 z komórki "B3" Linia = Derline + 1 'Dodaj linię, aby przejść na puste miejsce Arkusz1.Komórki(Linia, "B") = Data
coul = Cells.Find(Nazwa, Komórki(1, "E")). Interior.ColorIndex 'Pobiera kolor pola z nazwą użytkownika zakres(komórki(linia, "a"), komórki(linia, "c")). Interior.ColorIndex = kolor
Oto poprawione makro, ale będzie to zależało od kolejności działań użytkownika:
Najpierw napisze w swoim referencji na końcu listy ?
Sub AutoName()
Nazwa = Application.UserName ' nazwa użytkownika
Derligne = Arkusze("Arkusz1"). Komórki(1, "A"). Koniec(xlW dół). Wiersz ' Pobierze ostatni niepusty wiersz komórki kolumny "Data" arkusz1 z komórki "B3"
Arkusze("Arkusz1"). Komórki (Derligne, 2). Value = Date 'Wprowadzono datę dnia
Set cell = Cells.Find(what:=Name, LookAt:=xlWhole) 'Pobiera kolor pola z nazwą użytkownika coul = komórka. Interior.ColorIndex (Indeks kolorów) zakres(komórki(derligne, "a"), komórki(derligne, "c")). Interior.ColorIndex = kolor
Aby uzyskać przycisk, musisz przejść do zakładki "programista" => wstaw => Przycisk
Następnie wstawiasz przycisk do arkusza tak, jakby był notatką (kliknięcie lewym i prawym przyciskiem myszy w lewo, aby ustawić rozmiar), a następnie kliknij prawym przyciskiem myszy przycisk => przypisz makro => wybierz makro z listy
Z drugiej strony, oczywiście, makro musi znajdować się w języku Visual Basic przed
Aby wyświetlić zakładkę programisty (jeśli jej nie masz), musisz przejść do plik => opcje => Dostosuj wstążkę => Kliknij pole "programista" w "głównych zakładkach", jeśli tego nie zrobisz
Nie mówię tego w pliku, bo uważam, że lepiej trochę pomęczyć się i nauczyć niż mieć rozwiązanie pod klucz ;)
Edit: będziesz ostrożny, zostawiasz dużo informacji w swoich plikach między tym pytaniem a poprzednim. Znajdują się tam imiona i nazwiska współpracowników lub pełna lista części Twojej firmy. Radzę edytować swoje wiadomości i je usuwać/modyfikować.
-> Piszesz w ostatniej linii (ref 20244). A nie na ostatniej + 1 linijce Mała linijka modyfikacji do zrobienia jak dla mojego 2 makro
-> Osiągnąłeś granice VBA: jeśli to nie działa, to dlatego, że nie zapisałeś nazwy użytkownika DOKŁADNIE tak, jak została wprowadzona w maszynie. To jest to, co powiedziałem na samym początku pytania: będzie to nieustanne źródło błędów, gdy tylko pojawi się nowy użytkownik.
Dlatego radzę zrobić małe makro do zrobienia z każdym użytkownikiem na podstawie:
Sub DefName ()
Nazwa = Aplikacja.NazwaUżytkownika
ActiveCell = Nazwa
Koniec subwoofera
Musisz tylko zaznaczyć pole, w którym chcesz umieścić nazwę, uruchomić makro i gotowe, jest wypełnione poprawnie. Do zrobienia dla każdej z obecnych osób