Chcę wstawić instrukcję if w komórce za pośrednictwem VBA, która zawiera podwójne cudzysłowy.
Oto mój kod:
Worksheets("Sheet1").Range("A1").Value = "=IF(Sheet1!B1=0,"",Sheet1!B1)"
Z powodu podwójnych cudzysłowów mam problemy z wstawieniem ciągu. Jak postępować w podwójnych cudzysłowach?
excel
vba
double-quotes
user793468
źródło
źródło
Odpowiedzi:
Uważam, że najłatwiejszym sposobem jest podwojenie cudzysłowów, aby obsłużyć ofertę.
Niektórzy lubią używać CHR (34) *:
* Uwaga: CHAR () jest używany jako formuła komórki Excela, np. Pisząc "= ZNAK (34)" w komórce, ale dla kodu VBA używasz funkcji CHR ().
źródło
Innym obejściem jest utworzenie łańcucha z tymczasowym znakiem zastępczym. Następnie możesz użyć polecenia REPLACE, aby zmienić każdy znak tymczasowy na podwójny cudzysłów. Używam tyldy jako tymczasowego znaku zastępczego.
Oto przykład z projektu, nad którym pracowałem. Jest to mały program narzędziowy służący do naprawy bardzo skomplikowanej formuły, jeśli / kiedy komórka zostanie przypadkowo nadepnięta. Wejście do komórki jest trudnym wzorem, ale to małe narzędzie natychmiast to naprawia.
To naprawdę prosta sztuczka programistyczna, ale sprawia, że wprowadzanie formuły do kodu VBA jest całkiem łatwe.
źródło
Wszystkie podwójne cudzysłowy w cudzysłowie, które otaczają ciąg, należy zmienić dwukrotnie. Jako przykład miałem jeden z ciągów plików json: "delivery": "Standard", w edytorze VBA zmieniłem go na "" "delivery" ":" "Standard" "," i wszystko działa poprawnie. Jeśli musisz wstawić wiele podobnych ciągów, najpierw moja propozycja wstaw je wszystkie między "", a następnie za pomocą edytora VBA zamień "wewnątrz na" ". Jeśli popełnisz błąd, edytor VBA pokaże tę linię na czerwono i poprawisz ten błąd.
źródło
Wolę odpowiedź tabSF. wdrażając to samo do swojej odpowiedzi. poniżej jest moje podejście
źródło
Napisałem małą procedurę, która kopiuje formułę z komórki do schowka, którą można łatwo wkleić w Edytorze Visual Basic.
Został pierwotnie opublikowany w sekcji Vault for Chandoo.org .
źródło