Mun pitäis loihtia VB:lla ohjelma jossa on taulukkonäkymä.
Tietääks kukaan pystyykö VB:s tekemään moista HIIRELLÄ AKTIVOITAVIN soluin, solun arvon lisäämistä ja muokkaamista varten?
Jos pystyy, nii häh.. miten?
Miten muute nää MSFlexGrid ja DataGrid eroavat toisistaan?
Just olen tehnyt itselleni sovelluksen, jossa on tuo ominaisuus. Käytin MSFlexGridiä. Solu aktivoituu klikkaamalla vasemmalla hiiren painikkeella. Datan syöttö on koodattava itse eli solu ei toimi tekstiboxin tavoin. Jos käytät tietokantaa, MSFlexGridillä voi vain näyttää tiedot mutta DataGridillä voit myös lisätä ja muokata tietoja.
Mahtavaa :)
Hei setä.. mitä luulet, kehtaatko näyttää mulle sen verran koodia sen solun aktivoitumisen suhteen, eli hiiri taulukon päällä ja mitä sitte.. mistä tietää missä hiiri on ku clickaa.. miten aktivoituu solu - et pääsisin vähä alkuun?
Mä olen melko kielitaidoton ohjeen kanssa ja vaistonvarainen ja kokeellinen vääntäjä, mut tarvitsen yhden ohjelman harrastustoimintaan, eikä sellaista valmiina löydy.
Alkoi Excel:n taulukot paisua suuriks ku pullataikina ku innostuin Excel:n VBA:sta, et pitäis tehdä lopulta nyt suosiolla oma ohjelma VB:lla yksinkertaisine taulukkonäyttöineen, mut syöttö pitäis olla myös solut hiirellä aktivoiden, ainaki nopeita korjauksia varten.
On aika vähäiset kokemukset viel VB:sta.
Olen oppinut lähes kaiken näkemieni esimerkkikoodien avulla, mut täst en ole löytänyt yhtään esimerkkiä itselleni.
Muuten pärjäilen päättelykyvyllä ja kokeellisuudella ja aiemmin opituilla :)
Kyllä voin tuota koodia laittaa malliksi. Mun sovellus on toi kuntoindeksin laskeminen. Syötettävä data on melko vakiomuotoista ja siksi se tapahtuu vain hiirellä klikkaamalla. Päivämäärä, aika ja muutama kokonaisluku. Jos data halutaan syöttää näppäimillä, käytä Keypres-tapahtumaa ja lisää soluun näppäillyt merkit. Jos kovasti haluaa editoida solun merkkejä, on parasta lätkäistä tekstiruutu solun päälle, syöttää ja muokata siihen haluttu data ja sitten siirtää soluun. Solu osoitetaan asettamalla sen Row- ja Col-ominaisuudet. Indeksejä ei voi käyttää.
Private Sub fleG_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) F = fleG.Col: R = fleG.Row B = Button: sh = Shift Timer1.Enabled = True: I = 0 Select Case F Case 0 If fleG.Text = "" Then fleG = Date Else dt = 1: If sh = 2 Then dt = 30 If sh = 4 Then dt = 365 If B = 1 Then fleG = CDate(fleG) + dt If B = 2 Then fleG = CDate(fleG) - dt End If Case 1 If fleG.Text = "" Then fleG = "0:17:00" Else If B = 1 Then fleG = CDate(fleG) + 1 / 86400 If B = 2 Then fleG = CDate(fleG) - 1 / 86400 End If Case 2, 3, 4 If fleG.Text = "" Then fleG = 130 fleG.Col = 3: fleG = 70 fleG.Col = 4: fleG = 175 fleG.Col = F Else If B = 1 Then fleG = fleG + 1 If B = 2 Then fleG = fleG - 1 End If End Select End Sub
En oo tietenkään laiskuuttani kommentoinut koodia. Selostan hieman. Ekaan soluun tulee klikkaamalla päivämäärä, edelleen painamalla vasenta päivämäärä kasvaa ja oikealla painikkeella pienenee. Jatkuvasti painamalla Timerin ohjaamana lukema juoksee ylös tai alas. Sama periaate muilla. Toivottavasti saat selvää.
Kiitos ihan miljoonasti :) :) :)
Se olikin näköjään perin yksinkertaista!
Samalla sain tosta siististä koodistasi muita vinkkejä :)
Mahtavaa :) !!!
Joo.. noi tekstinsyötöt, ja käsittelyt mä olenkin jo opetellu VBA:ssa.
Itselläni on kyseessä erään kilpailun monimutkainen pisteenlasku. Kilpailussa on 30-150 malttamatonta osallistujaa kerrallaan ja tulokset pitää tulla nopeasti.
Nopeat korjaukset hiirellä osoittaen selkeään taulukkonäkymään ovat lähes välttämätöntä.
Täst tää lähtee :)
Kiitos vielä sulle!
Aihe on jo aika vanha, joten et voi enää vastata siihen.