Apostrof ispred brojeva pri kopiranju iz tekst polja
|
|
|||
Prebacujem podatke iz ćelije u Kalku u Tekst polje u dijalogu, a potom iz tekst polja u ćeliju u Kalku. Kada se podatak iz dijaloga prebacuje u ćeliju koristim ovaj način:
oCell12.String = TextField16.Text Međutim, brojevi u ćeliji imaju apostrof (') ispred brojeva. Kako se može rešiti da nema tog apostrofa. Probao sam sa Arrray metodom ali nije išlo, verovatno zato što je u pitanju tekst polje. Ima li za ovo neko rešenje? Da li se umesto tekst polja možda treba koristiti drugu vrstu polja? |
|||
|
|||
Postavite oCell12.Value za upis numeričke vrednosti. Više detalja: http://wiki.services.openoffice.org/wiki...ell_object
Ako ne grešim OpenOffice.org će sam pretvoriti tekstualnu nisku (string) iz TextField16.Text u broj pri dodeli, u slučaju da to ne radi upotrebite funkciju CInt(TexField16.Text). |
|||
|
|||
Da, sa
ocell12.value = textField12.Text brojevi se u ćeliju lepo prebacuju, nema apostrofa, ali nastaje drugim problem: u nekim ćelijama mora da se ubaci ovo: 234-5 ili 123/2010. U tom slučaju, sa gore navedenom kombinacijom, u ćelije se prebaci samo 234 i 123. Kako da se ovo reši? |
|||
|
|||
Ne čitate link koji sam ostavio. Kako je 234-5 formula, upisujete je kao ocell12.Formula = "=234-5" ili bilo koju drugu formulu. Formula mora da počinje znakom jednakosti.
Da ponovimo, objekat ćelije ima svojstva String (tekstualna niska, počinje apostrofom koji se ne prikazuje), Value (brojna vrednost ili datum/vreme za tako formatirane ćelije) i Formula (sadrži izraz koji počinje znakom jednakosti). Kada čitamo sadržaj ćelije koristimo ista svojstva, a koji tip je aktivan vidimo na osnovu svojstva Type:
|
|||
|
|||
Ne radi se o formuli. Recimo da se radi o pozivu na broj na nalogu za prenos, gde se vi pozivate na dokument pod rednim brojem 125/2010. O tome se radi. Ovaj redni broj dokumenta bi trebalo da se nekako prekopira sa dijaloga u ćeliju a da se ne promeni a niti da dobije apostrof (koji vizuelno nije vidljiv).
Nadam se da smo se sada razumeli. |
|||
|
|||
To je već jasnije. Zašto odmah niste napisali da želite da u ćeliju upišete tekst tako da se ne dodaje skriveni apostrof? Niska "125/3" nikako nije broj (broj je 125 kao što ste primetili da je rezultat), dok sam ja iz prve poruke razumeo da vi želite da upišete neki broj pa sam to pokušavao da vam pomognem.
Ako je ćelija formatirana kao broj ili kao opšti format (koji može da sadrži broj), tada upis teksta dodaje nevidljivi apostrof kao oznaku da ono što sledi ipak nije broj već tekst. Formatirajte ćeliju (Format > Ćelije) kao tekst, i upišite sa ocell12.String. |
|||
|
|||
Pre nego krenem da menjam, jedno pitanje: ja nisam znao kako, ali da li se iz tekst polja u dijalogu uopšte može array metodom kopirati podaci u ćeliju u dokumentu? Ova metoda mi je odlično radila kada sam kopirao iz ćelije u ćelije bilo kakve podatke, bilo da su u pitanju brojevi, datumi, tekst, i nisam morao da vodim računa da li je ćelja podešena na tekst, brojeve... a pastovan sadržaj ovom metodom se nije menjao (ubacivanjem apostrofa ili slično).
|
|||
|
|||
Kada kopirate ćeliju u ćeliju, kopirate sva njena svojstva, pa ne brinete o tipu podatka. Polje za tekst nema sva ta svojstva, i zato treba da prenesete sadržaj polja u odgovarajuća svojstva objekta ćelije. Vi sami znate da li je to što upisujete tekst, broj ili formula. Potrebno je da ćelija bude odgovarajuće formatirana, ali i ako nije, vrednost je i dalje tu ako ste je upisali u pravo svojstvo.
Čak i ako je pogrešno formatirana kao broj, a u nju preko svojstva String upišete tekst, nije mi jasno zašto vam apostrof smeta. Apostrof se ne vidi, ne štampa, ne utiče na račun, a nestaje pri postavci odgovarajućeg formata. Jedino kada smeta je ako želite da zaista upišete broj, ali tada treba umesto u svojstvo String, broj da upišete u svojstvo Value. Ne znam šta vam je to array metodom. Array je ključna reč koja pravi novi niz podataka, obično za prenos kao argument neke funkcije. Ćelije kopirate:
|
|||
|
|||
Kod: Sub Kopiraj_podatke_bez_formatiranja |
|||
|
|||
Nisam na ovo naišao ranije. getDataArray nad opsegom vraća niz nizova sa podacima u ćelijama, a setDataArray ih prima.
Prvom linijom definišemo opseg kao ćeliju B1. Drugom tekst iz polja pakujemo kao tekst u matricu 1x1 (jedna ćelija) i na kraju trećom linijom u opseg upisujemo podatke. Ako je B1 formatirana kao broj, pri upisu teksta koji liči na broj opet će se pojaviti taj skriveni apostorf kao indikator da sadržaj nije broj već tekst. Ali kao što rekoh ranije, taj apostrof ne bi trebalo da vas brine. Da ga uklonite, formatirajte B1 kao ćeliju koja sadrži tekst. |
|||