ďťż
Lemur zaprasza
Strona: [ > ] z 1 Autor Temat: Powiadamianie o zawartości komórki toja Typ: neutral Postów: 31 Zarejestrowany: Apr 2005 Powiadamianie o zawartości komórki W komórkach w kolumnie C mam formułe =JEŻELI(A1<$B$1;($B$1-A1);""Chciałbym, aby gdy pojawi się wartość w komórce z kolumny C uruchomiony został Magbox z informacją. Za pomysły z góry dziękuję 01-05-2005 16:15 Jarek Grzybowski Typ: neutral Postów: 11 Zarejestrowany: Apr 2005 Propozycja Taki kod umieścić w oknie Code dla arkusza, w którym ma być powiadomienie o zmianie wartości komórki w kolumnie "C": Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Column = 3 Then MsgBox "Wprowadzono wartość: " & .Value & " w komórce o adresie: " & .Address, vbInformation + vbOKOnly + vbApplicationModal, "Informacja o zmienionej wartości" End If End With End Sub Jeżeli ktoś chce aby takie powiadomienie o zmienionej wartości pokazywało się dla każdej komórki arkusza (tj. niezależnie od kolumny) powinien usunąć dwie następujące linijki kodu: If .Column = 3 Then End If Powodzenia _____________________________________________ Pozdrawiam Jarek 03-05-2005 17:46 Jarek Grzybowski Typ: neutral Postów: 11 Zarejestrowany: Apr 2005 Propozycja poprawka Instrukcje pomiędzy "If .Column = 3 Then" oraz "End If" powinny być w jednej linijce kodu (i tak jest), ale po wklejeniu kodu do postu wyszło mi inaczej. Przepraszam _____________________________________________ Pozdrawiam Jarek 03-05-2005 17:50 toja Typ: neutral Postów: 31 Zarejestrowany: Apr 2005 Jarku, wszystko jest OK, ale kod ten spelnia swoje zadanie jak wpisze się wartość do komórki w kolumnie C, natomiast jak wartość ta się pojawi w momencie zadzialania formuły to MsgBox jakoś nie chce się ukazać 04-05-2005 03:42 Jarek Grzybowski Typ: neutral Postów: 11 Zarejestrowany: Apr 2005 Kolejne podejście Słusznie (niestety) Oto kolejna moja propozycja: Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Column = 1 Then MsgBox "Wprowadzono wartość: " & .Value & " w komórce o adresie: " & .Address & ". Komórka " & .Offset(0, 2).Address & _ " przyjęła wartość: " & .Offset(0, 2).Value, _ vbInformation + vbOKOnly + vbApplicationModal, "Informacja o zmienionej wartości" ElseIf .Column = 2 Then MsgBox "Wprowadzono wartość: " & .Value & " w komórce o adresie: " & .Address & ". Komórka " & .Offset(0, 1).Address & _ " przyjęła wartość: " & .Offset(0, 1).Value, _ vbInformation + vbOKOnly + vbApplicationModal, "Informacja o zmienionej wartości" End If End With End Sub Ten kod umieśić w miejscu poprzedniego. Jeżeli następi zmiana komórek z kolumny A lub B to makro odczyta jak poprzednio wartość i adres zmienionej komórki oraz poda adres komórki i wartość w kolumnie C w tym samym wierszu (odkreślenia na końcach linii pozwalają na przejście do nowej lini kodu w trakcie polecenia, które powinno być w jednej linii). Powodzenia _____________________________________________ Pozdrawiam Jarek 04-05-2005 19:48 Jarek Grzybowski Typ: neutral Postów: 11 Zarejestrowany: Apr 2005 Znowu kod w poście nie zmieścił mi się Znowu kod w poście nie zmieścił mi się, dość długie wyszły te MsgBox-y. Teraz powinien wyglądać dużo lepiej i powinien nadawać się do skopiowania bez późniejszych poprawek położenia kodu w liniach: Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Column = 1 Then MsgBox "Wprowadzono wartość: " & .Value & " w komórce o adresie: " & .Address & ". Komórka " _ & .Offset(0, 2).Address & " przyjęła wartość: " & .Offset(0, 2).Value, _ vbInformation + vbOKOnly + vbApplicationModal, "Informacja o zmienionej wartości" ElseIf .Column = 2 Then MsgBox "Wprowadzono wartość: " & .Value & " w komórce o adresie: " & .Address & ". Komórka " _ & .Offset(0, 1).Address & " przyjęła wartość: " & .Offset(0, 1).Value, _ vbInformation + vbOKOnly + vbApplicationModal, "Informacja o zmienionej wartości" End If End With End Sub Przepraszam _____________________________________________ Pozdrawiam Jarek 04-05-2005 19:52 Jarek Grzybowski Typ: neutral Postów: 11 Zarejestrowany: Apr 2005 Korekta Okazało się w korespondencji mailowej, że komórki w kolumnach A i B nie są miejscem wprowadzania wartości przez użytkownika, lecz również zawierają formułu. Użytkownik korzysta z kolumn G i H. Zatem poprawiłem moją ostatnią propozycję. Ponad to dodałem analizę tekstu w komórkach kolumny C. Jeżeli użytkownik skasował albo wpisał zero w kolumnach G i H i to spowodowało, że zero mają również komórki w C, to wówczas MsgBox nie pojawi się: Private Sub Worksheet_Change(ByVal Target As Range) Dim ccc As String With Target If .Column = 7 Then ccc = .Offset(0, -4).Text If ccc = "" Or ccc = "0" Then Exit Sub MsgBox "Wprowadzono wartość: " & .Value & " w komórce o adresie: " & .Address & ". Komórka " _ & .Offset(0, -4).Address & " przyjęła wartość: " & .Offset(0, -4).Value, _ vbInformation + vbOKOnly + vbApplicationModal, "Informacja o zmienionej wartości" ElseIf .Column = 8 Then ccc = .Offset(0, -5).Text If ccc = "" Or ccc = "0" Then Exit Sub MsgBox "Wprowadzono wartość: " & .Value & " w komórce o adresie: " & .Address & ". Komórka " _ & .Offset(0, -5).Address & " przyjęła wartość: " & .Offset(0, -5).Value, _ vbInformation + vbOKOnly + vbApplicationModal, "Informacja o zmienionej wartości" End If End With End Sub Powodzenia _____________________________________________ Pozdrawiam Jarek 06-05-2005 17:07 toja Typ: neutral Postów: 31 Zarejestrowany: Apr 2005 Dziękuję, bardzo mi pomogłeś Makro dziala bez uwag ----------------------------------- Pozdrawiam Marian 14-05-2005 22:41 Wszystkich odpowiedzi: 7 :: Maxymalnie na stronę: 20 Strona: [ > ] z 1 |