Forum » Programiranje » [VBA EXCEL]ComboBox in baza
[VBA EXCEL]ComboBox in baza
ALfonz ::
Hello,
Imam težavo z operacijo, ki izračun dela v Sheet1, pri tem pa uporablja bazo iz Sheet2.
Cilj je:
1. Na Combobox1, ki se nahaja na Sheet1 naložiti podatke iz Sheet2.
2. V nadaljevanju pa na podlagi določene vrednosti iz Combobox1 izvesti račun v Sheet1,
ki pa preko for zanke išče vrednost v Sheet2. Končni rezultata se zapiše v Sheet1.
Uporabljen Optionbutton 1 in 2 sta vmesnika, ki usmerjata kateri del baze nas zanima.
Spodaj prikazana koda deluje, če je izračun in baza v istem Sheetu. Težava nastane, ko
bazo premaknem...s temle se igram že celo popoldne in nikakor ne rešim problema!
Zato se obračam na Forum z uprašanjem:
Kako izvesti zgoraj omenjen cilj po spodaj prikazani kodi, kjer je izračun v Sheet1 in baza iz katere črpamo na Sheet2?
nasveta oz rešitve bom zelo vesel :)
lep pozdrav
Private Sub ComboBox1_DropButtonClick()
Dim i As Integer
Dim j As Integer
If OptionButton1 = True Then
ActiveSheet.Shapes("ComboBox1").Select
Selection.ListFillRange = "B4:B25"
Else
If OptionButton2 = True Then
ActiveSheet.Shapes("ComboBox1").Select
Selection.ListFillRange = "B46:B69"
End If
End If
For j = 3 To 12
For i = 4 To 26
If OptionButton1 = True Then
If ComboBox1 = Cells(i, 2) Then
Cells(30, j) = Cells(i, j)
End If
Else
If OptionButton2 = True Then
If ComboBox1 = Cells(i + 42, 2) Then
Cells(30, j) = Cells(i + 42, j)
End If
End If
End If
Next i
Next j
End Sub
Imam težavo z operacijo, ki izračun dela v Sheet1, pri tem pa uporablja bazo iz Sheet2.
Cilj je:
1. Na Combobox1, ki se nahaja na Sheet1 naložiti podatke iz Sheet2.
2. V nadaljevanju pa na podlagi določene vrednosti iz Combobox1 izvesti račun v Sheet1,
ki pa preko for zanke išče vrednost v Sheet2. Končni rezultata se zapiše v Sheet1.
Uporabljen Optionbutton 1 in 2 sta vmesnika, ki usmerjata kateri del baze nas zanima.
Spodaj prikazana koda deluje, če je izračun in baza v istem Sheetu. Težava nastane, ko
bazo premaknem...s temle se igram že celo popoldne in nikakor ne rešim problema!
Zato se obračam na Forum z uprašanjem:
Kako izvesti zgoraj omenjen cilj po spodaj prikazani kodi, kjer je izračun v Sheet1 in baza iz katere črpamo na Sheet2?
nasveta oz rešitve bom zelo vesel :)
lep pozdrav
Private Sub ComboBox1_DropButtonClick()
Dim i As Integer
Dim j As Integer
If OptionButton1 = True Then
ActiveSheet.Shapes("ComboBox1").Select
Selection.ListFillRange = "B4:B25"
Else
If OptionButton2 = True Then
ActiveSheet.Shapes("ComboBox1").Select
Selection.ListFillRange = "B46:B69"
End If
End If
For j = 3 To 12
For i = 4 To 26
If OptionButton1 = True Then
If ComboBox1 = Cells(i, 2) Then
Cells(30, j) = Cells(i, j)
End If
Else
If OptionButton2 = True Then
If ComboBox1 = Cells(i + 42, 2) Then
Cells(30, j) = Cells(i + 42, j)
End If
End If
End If
Next i
Next j
End Sub
smetko ::
Za dostop do podatkov na kateremkoli listu uporabi:
Worksheets("Ime_lista").Cells(vrstica, stolpec)
lahko tudi
Worksheets(st_lista).range(območje)
Worksheets("Ime_lista").Cells(vrstica, stolpec)
lahko tudi
Worksheets(st_lista).range(območje)
No comment
ALfonz ::
Živjo smetko,
kot si predlagal sem se odločil in uporabil pristop: Worksheets(st_lista).Range (območje).
S testiranjem kode sem ugotovil, da zadeva deluje v primeru "for" zanke. Pri bazi, ki jo želim v Comboboxu pa dobim error 13:typemismatche.
Ali to pomeni, da koda:
ActiveSheet.Shapes("ComboBox1").Select
Selection.ListFillRange = Worksheets(3).Range("B4:B26")
ni primeren za izbrani pristop in je potrebno naložiti bazo z drugačno sintakso?
Najlepša hvala za hiter odgovor.
lep pozdrav
modificirana koda:
Private Sub ComboBox1_DropButtonClick()
Dim i As Integer
Dim j As Integer
If OptionButton1 = True Then
ActiveSheet.Shapes("ComboBox1").Select
Selection.ListFillRange = Worksheets(3).Range("B4:B26")
Else
If OptionButton2 = True Then
ActiveSheet.Shapes("ComboBox1").Select
Selection.ListFillRange = Worksheets(3).Range("B46:B69")
End If
End If
...
kot si predlagal sem se odločil in uporabil pristop: Worksheets(st_lista).Range (območje).
S testiranjem kode sem ugotovil, da zadeva deluje v primeru "for" zanke. Pri bazi, ki jo želim v Comboboxu pa dobim error 13:typemismatche.
Ali to pomeni, da koda:
ActiveSheet.Shapes("ComboBox1").Select
Selection.ListFillRange = Worksheets(3).Range("B4:B26")
ni primeren za izbrani pristop in je potrebno naložiti bazo z drugačno sintakso?
Najlepša hvala za hiter odgovor.
lep pozdrav
modificirana koda:
Private Sub ComboBox1_DropButtonClick()
Dim i As Integer
Dim j As Integer
If OptionButton1 = True Then
ActiveSheet.Shapes("ComboBox1").Select
Selection.ListFillRange = Worksheets(3).Range("B4:B26")
Else
If OptionButton2 = True Then
ActiveSheet.Shapes("ComboBox1").Select
Selection.ListFillRange = Worksheets(3).Range("B46:B69")
End If
End If
...
Zgodovina sprememb…
- spremenil: ALfonz ()
smetko ::
za "Selection.ListFillRange =" lahko uporabiš spodnje:
= Worksheets(3).Range("B46:B69").Address(, , , True)
ali
="list3!$B$46:$B$69"
= Worksheets(3).Range("B46:B69").Address(, , , True)
ali
="list3!$B$46:$B$69"
No comment
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Excel: tiskanje po vrsticahOddelek: Pomoč in nasveti | 1100 (1013) | luksorzi |
» | c# datagridview in comboxOddelek: Programiranje | 1204 (1092) | OmegaM |
» | [Visual C#] TableAdapterOddelek: Programiranje | 1131 (1007) | detroit |
» | [VB] Komunikacija s serijskimi napravamiOddelek: Programiranje | 2298 (1572) | mNeRo |
» | [Visual studio .NET] Rabim pomočOddelek: Programiranje | 1590 (1432) | darkolord |