< návrat zpět

MS Excel


Téma: odkazy na promenne rss

Zaslal/a 12.4.2017 10:19

Hoj machři,
chtěl jsem se zeptat když mám v listu událost BeforeDoubleClick z které volám formulář, jak si předám a hodnotu bunky z které bylo toto vyvoláno?


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
set aktivniBunka=Target
Form.Show



Public aktivniBunka As Range
=============================================
Private Sub ListBox1_Click()

Worksheets("data").Cells(aktivniBunka.Row, aktivniBunka.Column).Value = ListBox1.Column(1)
Worksheets("data").Cells(aktivniBunka.Row + 1, aktivniBunka.Column).Select
Worksheets("data").Cells(aktivniBunka.Row, aktivniBunka.Column).Value = ListBox1.Column(0)
Worksheets("data_klient").Cells(aktivniBunka.Row + 1, aktivniBunka.Column).Select
Unload Me
End Sub

Pro někoho blbost. 7

Zaslat odpověď >

#036015
elninoslov
A čo Vám na tom nefunguje ? Veď keď dáte deklaráciu
Public aktivniBunka As Range
do Modulu, tak premennú aktivniBunka Váš Form krásne vidí. Snáď nedávate deklaráciu do formu ...citovat
#036018
avatar

elninoslov napsal/a:

A čo Vám na tom nefunguje ? Veď keď dáte deklaráciu
Public aktivniBunka As Range
do Modulu, tak premennú aktivniBunka Váš Form krásne vidí. Snáď nedávate deklaráciu do formu ...

Ne do modulu jsem to nedal mám to ve worksheetu v general deklaraci 6 Dát to do modulu mě nenapadlo. 7citovat
#036031
avatar
1. Máš-li důvod, proč mít proměnnou aktivniBunka v ThisWorkbook, deklarovanou ovšem jako Public, pak se na ni můžeš odkudkoli přece odkazovat jako na
ThisWorkbook.aktivniBunka
I když mi není jasné, proč se to jmenuje aktivniBunka, když Target mohl klidně být blok buněk.

2. Subrutina ListBox1_Click je ale příšerná. Jak je tak populární v tomto fóru, opakovaně a úplně zbytečně pořád dokola počítá to samé. A jak je tady taky tak oblíbené, zbytečně odkazuje na listy pomocí stringu Name, což nutí Basic prohledávat Sheets collection a zdlouhavě porovnávat string "data" se jmény listů. Vždyť přece listy mají svá kódová jména (CodeName), která slouží Basicu k bleskovému, přímému přístupu k listu. Proč nenapsat prostinké

Private Sub ListBox1_Click()
Dim r&, c&
r = aktivniBunka.Row
c = aktivniBunka.Column
With ListX.Cells
.Item(r, c) = ListBox1.Column(1)
.Item(r + 1, c).Select
End With
... apod., atd. ...
End Sub


Tvůj list "data" má kódové jméno List1, List2, nebo tak nějak; já v uvedené proceduře píšu ListX, což musíš nahradit správným kódovým jménem. Navíc ti nikdo nezakázal změnit kódové jméno příslušného listu třeba na Data a u listu s jménem "data_klient" změnit kódové jméno třeba na Klient. Pak

Private Sub ListBox1_Click()
Dim r&, c&
r = aktivniBunka.Row
c = aktivniBunka.Column
With Data.Cells
.Item(r, c) = ListBox1.Column(1)
.Item(r + 1, c).Select
End With
With Klient.Cells
.Item(r, c) = ListBox1.Column(0)
.Item(r + 1, c).Select
End With
Unload Me
End Sub


nebo

Private Sub ListBox1_Click()
Dim rng As Range, r&, c&
r = aktivniBunka.Row
c = aktivniBunka.Column
Set rng = Data.Cells(r, c)
rng = ListBox1.Column(1)
rng(2).Select
Set rng = Klient.Cells(r, c)
rng = ListBox1.Column(0)
rng(2).Select
Unload Me
End Sub
citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse