Nie proszę o pomoc w jakimkolwiek scenariuszu, ale moje pytanie dotyczy wyjaśnień. Ostatnio robiłem dużo skryptów VB w Excelu, więc w tym pytaniu naprawdę mam na myśli program Excel. Jaka jest różnica między .text, .value i .value2? Kiedy powinienem użyć target.text, target.value i target.value2? Nigdy nie użyłem opcji value2, ale nadal chciałbym wiedzieć, do czego służy.Jaka jest różnica między .text, .value i .value2?
Czasami, jeśli używam .text, daje mi to błąd i muszę użyć .value, gdy sprawdzam lub manipuluję tekstem w komórce. Wtedy czasami, gdy myślę, że powinienem użyć .value, pojawia się błąd i muszę użyć .text. Zwykle akceptuje albo problem, albo nie, ale czasami robi różnicę. Wiem, że musi być jakaś logika do tego, ale nie mogę tego zrozumieć.
Dowiedziałem się również, że jeśli po prostu zostawisz to jako cel bez określania .text lub .value, to na początku zadziała, ale wtedy coś, co ktoś zrobi, ostatecznie doprowadzi do błędu skryptu, więc zawsze najlepiej jest użyć Coś na tym. Chyba pytam, czy ktoś może mi podać jakąś wskazówkę, zasadę, jak właściwie używać każdego z nich i kiedy należy go użyć.
Dzięki za wyjaśnienia. Rozumiem to lepiej. Obaj są dobrymi wytłumaczeniami. Poniżej znajduje się malutki przykład mojego kodu, który działa. Pomyślałem, że powinien to być tekst target.text, ale byłby to błąd, więc gdy użyłem target.value, zadziałało.
If LCase(Target.Value) = LCase("HLO") And Target.Column = 15 Then
Target.Value = "Higher Level Outage"
End If
nadal jestem nieco zdezorientowany bo kiedy myślę o wartości lub wartość2, zwłaszcza po swoich odpowiedziach, że przewidziane, myślę, że powinny one być stosowane tylko do liczb. Jednak w moim przykładzie mówię o ściśle tekstowym, który jest dużo tego, o czym mówi mój skrypt (tekst w komórkach, bardziej niż liczby).
LCase (Target.Value) zakończy się niepowodzeniem, jeśli parametr Target.Value nie jest koerowalny do ciągu znaków, ponieważ LCase wymaga łańcucha do argumentu. Powinieneś najpierw sprawdzić VarType według mojej odpowiedzi. Zauważ, że możesz użyć UCase zamiast tego i porównać bezpośrednio z "HLO": nie ma sensu operowanie literałem. – Bathsheba
Dziękujemy za informację o VarType. Jeśli chodzi o LCase lub UCase do tego, to naprawdę nie ma znaczenia, którego użyłem. Niektórzy ludzie wpisują go jako hlo, a inni wpisują go jako HLO. Z tego, co zobaczyłem, okazało się, że ten drugi był częściej używany. – Chris