Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Toimiiks hiiri taulukossa?

Arsman [21.04.2004 17:27:41]

#

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?

setä [21.04.2004 18:39:14]

#

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.

Arsman [21.04.2004 19:59:58]

#

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 :)

setä [21.04.2004 20:44:30]

#

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ää.

Arsman [22.04.2004 09:23:33]

#

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!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta