• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Visual basic excell. Jak wyswietlic komunikat jesli wartosc komorki przyjmie konkretna liczbe ?

VPS Starter Arubacloud
0 głosów
720 wizyt
pytanie zadane 15 czerwca 2018 w Visual Basic przez havk Nowicjusz (120 p.)

Witam

Dopiero od wczoraj zaczynam cos tam czytac o visual basic jako ze mam problem do rozwiazania w excellu i to moj pierwszy post.

Opis ponizej:

W "tab1" mam komorki, przykladowo : C1 , C3 , C4 . Komorki te  moga przyjmowac wartosci : 1,,8,9,15,21. Dla kazdej z  tych wymienionych liczb istnieje komunikat ktory ma byc wyswietlony jesli liczba ta zostanie wpisana w komorke: C1 lub C3 lub C4.

W "tab2" mam wypisane komunikaty do wyswietlenia:

tab2 komorka A1 (komunikat dla liczby 1): "Pamietaj by wykonac czynnosc ABC"

tab2 komorka A2 (komunikat dla  liczby 8):"Pamietaj by wykonac czynnosc DCEF"

tab2 komorka A3 (komunikat dla czby 9): "Pamietaj by wykonac czynnosc BDEE"

i tak dalej komunikaty dla pozostalych liczb.

 

Jesli w C1 wpiszemy liczbe dla ktorej jest komunikat wtedy sie wyswietli msgbox z tym komunikatem, jesli potem wpiszemy w C3 liczbe dla ktorej jest dostepny komunikat to tutaj takze wyswietli sie msgbox  z komunikatem dla tej liczby ale juz nie wyswietli sie ponownie komunikat dla liczby z komorki C1  jesli zostala wczesniej wpisana i tak samo dla pozostalych . 

Ogolnie chodzi o takie przypomnienie co musi byc zrobione, sprawdzone jesli wpisze w komorke dana liczbe ktora odpowiada czynnosciom ktore musza byc wykonane. 

Probowalem to zrobic miesiac temu ale nic mi z tego nie wyszlo a kod juz gdzies mi przepadl. Znalazlem kiedys jakis w miare odpowiadajacy mojemu problemowi kod ale nie dzialal tak jak tego potrzebuje. Dostawalem komunikaty dla wszystkich komorek C1, C3, C4  jednoczesnie zamiast dla aktualnie  wartosci w bierzacej komorce.

  • Nie proś o gotowe rozwiązania - forum służy do wspólnej nauki, nie do pisania gotowców.

Poprosze chociaz o jakies naprowadzenie jesli nie rozwiazanie problemu.

 

1 odpowiedź

0 głosów
odpowiedź 15 czerwca 2018 przez jeremus Maniak (59,720 p.)
'spróbuj coś takiego ...to tylko szkielet...
Private Sub Worksheet_Change(ByVal Target As Range)
  
  If Target = Range("C1") Then
    Select Case Target.Value
      Case 1
        MsgBox ("komunikat1 dla C1")
      Case 2
        MsgBox ("komunikat2 dla C1")
    End Select
  ElseIf Target = Range("C2") Then
    Select Case Target.Value
      Case 1
        MsgBox ("komunikat1 dla  c2")
      Case 2
        MsgBox ("komunikat2 dla c2")
    End Select
  End If
End Sub

 

komentarz 15 czerwca 2018 przez havk Nowicjusz (120 p.)
ok, dziekuje od tego zaczne
komentarz 16 czerwca 2018 przez havk Nowicjusz (120 p.)

@jeremus, Witam . Mam ciagle jeden problem . Jesli przykladowo dla wybranej komorki tutaj akurat C7 przykladowo wpisze cyfre 1 to pojawia mi sie komunikat o ile jakis jest wpisany w worksheet "information" pole A5. Nastepnie jesli w jakies inne pole wpisze cyfre 1 to znow mi sie pojawia komunikat z workseet "information" pole A5. Czyli jakby jakis przeciek byl. Jesli z kolei nie wybiore cyfry 1 w polu C7 a wpisze przykladowo 4 to wpisujac 1 do innej komorki nic sie nie dzieje czyli wpierw musi nastapic wybor opcji w polu C7 i dopiero potem po wpisaniu tej samej liczby w inne miejsce ponownie nastepuje wyswietlenie komounikatu.

Czy da sie tego jakos uniknac ?

 

Private Sub Worksheet_Change(ByVal Target As Range)
   
  If Target = Range("C7") Then
    Select Case Target.Value
    Case 1
        If Not IsEmpty(Worksheets("information").Range("A5")) Then
        MsgBox Worksheets("information").Range("A5").Value
        End If
    Case 2
      If Not IsEmpty(Worksheets("information").Range("A7")) Then
        MsgBox Worksheets("information").Range("A7").Value
        End If
    Case 3
      If Not IsEmpty(Worksheets("information").Range("A9")) Then
        MsgBox Worksheets("information").Range("A9").Value
        End If
    Case 4
      If Not IsEmpty(Worksheets("information").Range("A11")) Then
        MsgBox Worksheets("information").Range("A11").Value
        End If
    End Select
 
  End If
End Sub

 

komentarz 16 czerwca 2018 przez jeremus Maniak (59,720 p.)

trochę źle zinterpretowałem Target

to powinno zadziałać :

Private Sub Worksheet_Change(ByVal Target As Range)
 
 Dim sAddr As String
 sAddr = Target.Address(0, 0)
 If sAddr = "C7" Then
    Select Case Target.Value
    Case 1
        If Not IsEmpty(Worksheets("information").Range("A5")) Then
        MsgBox Worksheets("information").Range("A5").Value
        End If
    Case 2
      If Not IsEmpty(Worksheets("information").Range("A7")) Then
        MsgBox Worksheets("information").Range("A7").Value
        End If
    Case 3
      If Not IsEmpty(Worksheets("information").Range("A9")) Then
        MsgBox Worksheets("information").Range("A9").Value
        End If
    Case 4
      If Not IsEmpty(Worksheets("information").Range("A11")) Then
        MsgBox Worksheets("information").Range("A11").Value
        End If
    End Select
 End If
End Sub

 

komentarz 16 czerwca 2018 przez havk Nowicjusz (120 p.)
dziala idealnie , dziekuje

Podobne pytania

0 głosów
1 odpowiedź 409 wizyt
0 głosów
1 odpowiedź 1,381 wizyt
0 głosów
1 odpowiedź 1,129 wizyt
pytanie zadane 2 listopada 2018 w Visual Basic przez kubekzone Użytkownik (620 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...