Excel Form ComboBox

Wątek przeniesiony 2024-06-25 14:31 z Inne języki programowania przez cerrato.

ZO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Witam,

Z uwagi na to, że jestem bardzo początkujący mam taki problem. Stworzyłem w Excelu formularz gdzie jest klika pól typu ComboBox i TextBox. Pola combo mam wypełnione kodem:

TypiA.List = Array("A", "F")
TypiB.List = Array("A", "F")
DlugoscA.List = Array(1, 1.5)
DlugoscB.List = Array(1, 1.5)

Chciałbym wykonać obliczenia matematyczne (odejmowanie) oparte na DlugoscA i DlugoscB. Tworząc zapis np

Me.Roznica = Me.DlugoscA.Value - Me.Dlugosc.Value

dostaje błąd Type Mismatch. problemem jest wartość 1.5. Jeśli w polu kombi wybrana jest wartość 1 liczy się poprawnie.
Proszę o info jak zadeklarować tablice, żeby liczyło poprawnie.

THX
Pozdrawiam

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 288
0

Jak tworzysz zmienną to jest typu int? Zmień na double

ZO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0
pavarotti napisał(a):

Jak tworzysz zmienną to jest typu int? Zmień na double

Właśńie nie wiem jak zadeklarować tą tablicę. Jak dałem

Dim TypA As String
Dim TypB As String
Dim DlugoscA As Double
Dim DlugoscB As Double

TypiA.List = Array("A", "F")
TypiB.List = Array("A", "F")
DlugoscA.List = Array(1, 1.5)
DlugoscB.List = Array(1, 1.5)

To mi wywala błąd "Invalid qualifier"

Jak nie deklaruję zmiennych to działa ale sie nie odejmuje (no bo pewnie myśli, że to text)

Pozdrawiam

JC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11
0
Zorro_ napisał(a):
pavarotti napisał(a):

Jak tworzysz zmienną to jest typu int? Zmień na double

Właśńie nie wiem jak zadeklarować tą tablicę. Jak dałem

Dim TypA As String
Dim TypB As String
Dim DlugoscA As Double
Dim DlugoscB As Double

TypiA.List = Array("A", "F")
TypiB.List = Array("A", "F")
DlugoscA.List = Array(1, 1.5)
DlugoscB.List = Array(1, 1.5)

To mi wywala błąd "Invalid qualifier"

Jak nie deklaruję zmiennych to działa ale sie nie odejmuje (no bo pewnie myśli, że to text)

Pozdrawiam

To jak zadeklarujesz wartości zanim trafią do comboboxa nie ma dużego znaczenia, gdyż on zwraca tekst. W takim razie powinieneś przekonwertować wartość przed obliczeniem, np. tak:

Kopiuj
Dim a As Double
Dim b As Double

a = CDbl(Me.ComboBox1.Value)
b = CDbl(Me.ComboBox2.Value)

TextBox1.Value = a - b

ZO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0
JustCuzICan napisał(a):
Zorro_ napisał(a):
pavarotti napisał(a):

Jak tworzysz zmienną to jest typu int? Zmień na double

Właśńie nie wiem jak zadeklarować tą tablicę. Jak dałem

Dim TypA As String
Dim TypB As String
Dim DlugoscA As Double
Dim DlugoscB As Double

TypiA.List = Array("A", "F")
TypiB.List = Array("A", "F")
DlugoscA.List = Array(1, 1.5)
DlugoscB.List = Array(1, 1.5)

To mi wywala błąd "Invalid qualifier"

Jak nie deklaruję zmiennych to działa ale sie nie odejmuje (no bo pewnie myśli, że to text)

Pozdrawiam

To jak zadeklarujesz wartości zanim trafią do comboboxa nie ma dużego znaczenia, gdyż on zwraca tekst. W takim razie powinieneś przekonwertować wartość przed obliczeniem, np. tak:

Kopiuj
Dim a As Double
Dim b As Double

a = CDbl(Me.ComboBox1.Value)
b = CDbl(Me.ComboBox2.Value)

TextBox1.Value = a - b

Dzięki, pomogło. Dodatkowo moim błędem było wpisanie do tablicy wartości 1.5 zamiast 1,5. Nawet przy deklaracji zmiennej double pokazywał błąd. Teraz juz działa poprawnie.

Dzięki.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.