Potrzebuję trochę pomocy od bardziej doświadczonych użytkowników Excel VBA.
Zasadniczo mam 2 grupy 3 komórek (łącznie 6 komórek) Jeśli jedna grupa 3 komórek jest wypełniona, musi ją zaakceptować i nie zwracać okna komunikatu.
Jeśli jedna z dwóch grup nie jest wypełniona (pusta) lub zwraca błąd, musi wyświetlić „msgbox błędu”
Dwie grupy 3 komórek to: (A39, A40, A41) i (E39, E40, E41)
To jest obecnie w mojej formule:
If IsError(Range("E39, E40, E41")) Then MsgBox ("error msgbox"): Exit Sub
If Range("E39, E40, E41") = Blank Then MsgBox ("error msgbox"): Exit Sub
Jak dodać A39, A40, A41 do tej formuły, aby w przypadku
wypełnienia grupy 1 (A39, A40, A41) lub grupy 2 (E39, E40, E41) nie pojawiał się komunikat „błąd msgbox”?
Sam próbowałem się z tym bawić, ale zwróciłoby „msgbox błędu”, gdyby wszystkie 6 komórek nie były wypełnione.
Próbowałem spojrzeć na instrukcje AND, OR, ale nie do końca mogę uzyskać żądaną funkcję.
Oto zdjęcie, które może pomóc
Każda pomoc byłaby bardzo mile widziana
Odpowiedzi:
Masz problemy z kodem. Po pierwsze,
Range("E39, E40, E41")
nie odnosi się do tych trzech komórek. Trzeba je oddzielić przecinkami poza cudzysłowamiRange("E39", "E40", "E41")
.Po drugie, aby właściwie ocenić, czy te komórki są puste, musisz je oddzielić w swoim
IF
wyciągu, ponieważ:To samo dotyczy IsError:
Jednak aby zgrupować logikę, musisz pomyśleć inaczej, ponieważ spowoduje to wyrzucenie błędu, gdy którakolwiek z tych komórek będzie pusta / zawiera błąd. Więc możesz rozważyć dodanie dwóch nowych zmiennych, które ustawiłeś jako
True
lub wFalse
zależności od tego, czy grupa jest poprawnie wypełniona, czy nie. Przykład:Być może będziesz musiał dostosować ten kod, aby dopasować go do swojej sytuacji, ale tak do niego podchodzę.
źródło
Musiałem go trochę dostosować, aby działał dobrze z plikiem Excela, którego używałem.
Z podziękowaniami dla exantas (za kod) i Dave'a Rooka (za edycję mojego postu) , to jest końcowy kod:
Musiałem zamienić formułę w komórkach E39, E40, E41, A39, A40, A41 na :
= JEŻELI (CZY.BŁĄD (stara_formula); ""; (stara_formula), aby wyświetlała pustą / pustą komórkę po zwróceniu błędu.
źródło