napisał: jalamas postów: 316
umieszczony: 16 lutego 2007 10:15
|
|
A nie zapomnij sprawdzić czy to, co user wpisał istotnie jest tym czego sobie sobie życzysz,
czy w ogóle coś wpisał, aby aplikacja nie "odpłynęła w dal" z serią komunikatów.... |
|
napisał: jottad postów: 118
umieszczony: 15 lutego 2007 11:03
|
|
Cytat: Dzieki bardzo :) częstość dziala :)
ale jesli chodzi o wpisywanie do komorek E4:E9 i D4:D9, to wpisuję coś takiego, ale wtedy mi wpisuje wcale nie w pierwsze puste tak jak powinno byc, tlyko kilka wierszy nizej w sumie od D6 lub D7 a w E to juz w ogole sie miesza i wpisuje jeszcze nizej...
Ja wolalabym, zeby bylo zadeklarowane, ze przedzialy wpisuje w D4:D9, a czestosci w E4:E9. tylko nie wiem jak to zrobic. narazie mam tak:
Skoro wpisujesz zawsze do tych samych komórek, to nie ma potrzeby wyszukiwania pierwszej pustej komórki. Można wszystko zrobić na "sztywno", np:
Private Sub cmd_wyslij_Click()
With Worksheets("2.2.1.").Range("D4")
.Offset(0, 0) = CDbl(TextBox3.Text)
.Offset(1, 0) = CDbl(TextBox4.Text)
.Offset(2, 0) = CDbl(TextBox5.Text)
.Offset(3, 0) = CDbl(TextBox7.Text)
.Offset(4, 0) = CDbl(TextBox8.Text)
.Offset(5, 0) = CDbl(TextBox6.Text)
End With
With Worksheets("2.2.1.").Range("E4")
.Offset(0, 0) = CDbl(TextBox10.Text)
.Offset(1, 0) = CDbl(TextBox11.Text)
.Offset(2, 0) = CDbl(TextBox12.Text)
.Offset(3, 0) = CDbl(TextBox13.Text)
.Offset(4, 0) = CDbl(TextBox14.Text)
.Offset(5, 0) = CDbl(TextBox9.Text)
End With
End Sub
Funkcją CDbl wymuszam tutaj konwersję wartości textbox'ów na liczbę. Ma to zapobiegać traktowaniu wartości kontrolki jako tekstu (to właśnie powoduje Twoje kłopoty z wartościami w obszarze danych) |
|
napisał: alicelee postów: 57
umieszczony: 14 lutego 2007 18:03
|
|
I wiecie co sie stalo!! Te wszystkie wartosci co wpisuje, do B4:B103 to sie tak wpisują do excela, ze on tak jakby ich nie widzi. I jak wpisuje calkowite to liczy z nich srednia, a jak wpisuje z przecinmkiem liczny to nie widzi ich i pokazuje dzielenie przez zero ;( |
|
napisał: alicelee postów: 57
umieszczony: 14 lutego 2007 16:09
|
|
Ewentualnie jak takie cos przenies przedzialy (PD5-PD9) doD4:D9 i czestosc CZ1 do E4:E9.
Private Sub btn_dalej4_Click()
MultiPage1.Value = MultiPage1.Value + 1
Dim srednia, suma, minim, maxim, rozmiar, PD5, PD6, PD7, PD8, PD9 As Variant
Dim CZ1 As Variant
With Worksheets("2.2.1.")
srednia = Application.WorksheetFunction.Average(.Range("B4:B103"))
TextBox15.Value = (srednia) ' wylicza średnią z wartości B4:B103 'Text zmien na Value bo chyab tak jest ok
suma = Application.WorksheetFunction.Sum(.Range("C4:C103"))
TextBox16.Value = (suma / 100) ' wylicza .....
TextBox19.Value = (srednia / (suma / 100))
maxim = Application.WorksheetFunction.Max(.Range("B4:B103"))
TextBox18.Value = (maxim) ' wylicza maximum z wartości B4:B103
minim = Application.WorksheetFunction.Min(.Range("B4:B103"))
TextBox17.Value = (minim) ' wylicza minimum z wartości B4:B103
rozmiar = (((maxim) - (minim)) / (7.5))
TextBox20.Value = (rozmiar)
TextBox3.Value = (maxim) 'to jest pierwsza komórka z przedziałów
PD5 = ((maxim) - (rozmiar))
TextBox4.Value = (PD5) 'to jest druga komórka z przedziałów
PD6 = ((PD5) - (rozmiar))
TextBox5.Value = (PD6) 'to jest trzecia komórka z przedziałów
PD7 = ((PD6) - (rozmiar))
TextBox7.Value = (PD7) 'to jest czwarta komórka z przedziałów
PD8 = ((PD7) - (rozmiar))
TextBox8.Value = (PD8) 'to jest piąta komórka z przedziałów
PD9 = ((PD8) - (rozmiar))
TextBox6.Value = (PD9) 'to jest szósta komórka z przedziałów
CZ1 = Application.WorksheetFunction.Frequency(.Range("B4:B103"), _
Array(PD9, PD8, PD7, PD6, PD5, maxim))
ListBox1.List = CZ1
End With
End Sub |
|
napisał: alicelee postów: 57
umieszczony: 14 lutego 2007 16:02
|
|
Dzieki bardzo :) częstość dziala :)
ale jesli chodzi o wpisywanie do komorek E4:E9 i D4:D9, to wpisuję coś takiego, ale wtedy mi wpisuje wcale nie w pierwsze puste tak jak powinno byc, tlyko kilka wierszy nizej w sumie od D6 lub D7 a w E to juz w ogole sie miesza i wpisuje jeszcze nizej...
Ja wolalabym, zeby bylo zadeklarowane, ze przedzialy wpisuje w D4:D9, a czestosci w E4:E9. tylko nie wiem jak to zrobic. narazie mam tak:
Private Sub cmd_wyslij_Click()
'zatwierdzenie danych do wpisania
Dim pustywiersz, wiersz1, wiersz2, kolumna, kolumna2 As Double ' czy Double
wiersz1 = Application.WorksheetFunction.CountA(Range("D:D")) + pustywiersz
pustywiersz = Application.WorksheetFunction. _
CountA(Range("A:A")) + 1
'Range("D:E")- zakres, w którym jest tabela to D4:E9
kolumna = 4
kolumna2 = 5
' tu ma być with worksheets polecenie zeby nie pisac jaki arkusz caly czas
Worksheets("2.2.1.").Cells(wiersz1, kolumna) = TextBox3
Worksheets("2.2.1.").Cells(wiersz1 + 1, kolumna) = TextBox4
Worksheets("2.2.1.").Cells(wiersz1 + 2, kolumna) = TextBox5
Worksheets("2.2.1.").Cells(wiersz1 + 3, kolumna) = TextBox7
Worksheets("2.2.1.").Cells(wiersz1 + 4, kolumna) = TextBox8
Worksheets("2.2.1.").Cells(wiersz1 + 5, kolumna) = TextBox6
wiersz2 = Application.WorksheetFunction.CountA(Range("E:E")) + pustywiersz
pustywiersz = Application.WorksheetFunction. _
CountA(Range("A:A")) + 1
Worksheets("2.2.1.").Cells(wiersz2, kolumna2) = TextBox10
Worksheets("2.2.1.").Cells(wiersz2 + 1, kolumna2) = TextBox11
Worksheets("2.2.1.").Cells(wiersz2 + 2, kolumna2) = TextBox12
Worksheets("2.2.1.").Cells(wiersz2 + 3, kolumna2) = TextBox13
Worksheets("2.2.1.").Cells(wiersz2 + 4, kolumna2) = TextBox14
Worksheets("2.2.1.").Cells(wiersz2 + 5, kolumna2) = TextBox9
End Sub
ale tak jak napisalam uzycie funkcji "pierwszy pusty" jakos nie bardzo chce dzialac... :| |
|
napisał: jottad postów: 118
umieszczony: 14 lutego 2007 08:17
|
|
Cytat:Witam
Mam następujący problem. Mam na userformie 100 textboxow, Po wpisaniu wszystkich wartosci klikam przycisk dalej i w nastepnej zakladce pojawiaja sie wartosci:
Private Sub btn_dalej4_Click()
MultiPage1.Value = MultiPage1.Value + 1
Dim srednia, suma, minim, maxim, rozmiar, PD5, PD6, PD7, PD8, PD9, CZ1, CZ2, CZ3, CZ4, CZ5, CZ6 As Double
With Worksheets("2.2.1.")
srednia = Application.WorksheetFunction.Average(.Range("B4:B103"))
TextBox15.Text = (srednia) ' wylicza średnią z wartości B4:B103
suma = Application.WorksheetFunction.Sum(.Range("C4:C103"))
TextBox16.Text = (suma / 100) ' wylicza .....
TextBox19.Text = (srednia / (suma / 100))
maxim = Application.WorksheetFunction.Max(.Range("B4:B103"))
TextBox18.Text = (maxim) ' wylicza maximum z wartości B4:B103
minim = Application.WorksheetFunction.Min(.Range("B4:B103"))
TextBox17.Text = (minim) ' wylicza minimum z wartości B4:B103
rozmiar = (((maxim) - (minim)) / (7.5))
TextBox20.Text = (rozmiar)
TextBox3.Text = (maxim) 'to jest pierwsza komórka z przedziałów
PD5 = ((maxim) - (rozmiar))
TextBox4.Text = (PD5) 'to jest druga komórka z przedziałów
PD6 = ((PD5) - (rozmiar))
TextBox5.Text = (PD6) 'to jest trzecia komórka z przedziałów
PD7 = ((PD6) - (rozmiar))
TextBox7.Text = (PD7) 'to jest czwarta komórka z przedziałów
PD8 = ((PD7) - (rozmiar))
TextBox8.Text = (PD8) 'to jest piąta komórka z przedziałów
PD9 = ((PD8) - (rozmiar))
TextBox6.Text = (PD9) 'to jest szósta komórka z przedziałów
'CZ1 = Application.WorksheetFunction.Frequency("B4:B103", "D4:D9")
'TextBox10.Text = (CZ1) 'to jest szósta komórka z przedziałów
End With
End Sub
ga na tym, ze chcialabym, aby wyliczalo czestosc, an podstawie tych otrzymanych danych. czyli na podstawei danych z B4:B103 oraz przedzialow Pd5 do PD9.
Proszę pomóźcie...
pozdrawiam serdecznie
ALICE
Nie wiem dlaczego zakładasz nowy wątek, skoro dostałas odpowiedź we wcześniejszym :(
Ale nic to! Jeszcze raz, ale nieco inaczej!
Poniewawż funkcja Częstość zwraca tablicę wartości, to nie możesz zwrócic wartości do jednego tekstboxa. Musisz dla wartosci każdego z przedziałów utworzyc oddzielną kontrolkę i wtedy:
CZ1 = _
Application.WorksheetFunction.Frequency(.Range("B4:B103"), _
Array(PD5,PD6,PD7,PD8,PD9))
'pierwsza obliczona watość
TextBox10.Text = CZ1(1,1)
'druga obliczona wartość
TextBox111.Text = CZ1(2,1)
'trzecia obliczona wartość
TextBox112.Text = CZ1(3,1)
'itd...
Wartości przedziałów muszą być w kolejności rosnącej a zmienna CZ1 zadeklarowana jako Variant.
Inny sposób wyświetlenia wartości pokazałem w poprzednim wątku. |
|
napisał: alicelee postów: 57
umieszczony: 14 lutego 2007 01:33
|
|
Witam
Mam następujący problem. Mam na userformie 100 textboxow, Po wpisaniu wszystkich wartosci klikam przycisk dalej i w nastepnej zakladce pojawiaja sie wartosci:
Private Sub btn_dalej4_Click()
MultiPage1.Value = MultiPage1.Value + 1
Dim srednia, suma, minim, maxim, rozmiar, PD5, PD6, PD7, PD8, PD9, CZ1, CZ2, CZ3, CZ4, CZ5, CZ6 As Double
With Worksheets("2.2.1.")
srednia = Application.WorksheetFunction.Average(.Range("B4:B103"))
TextBox15.Text = (srednia) ' wylicza średnią z wartości B4:B103
suma = Application.WorksheetFunction.Sum(.Range("C4:C103"))
TextBox16.Text = (suma / 100) ' wylicza .....
TextBox19.Text = (srednia / (suma / 100))
maxim = Application.WorksheetFunction.Max(.Range("B4:B103"))
TextBox18.Text = (maxim) ' wylicza maximum z wartości B4:B103
minim = Application.WorksheetFunction.Min(.Range("B4:B103"))
TextBox17.Text = (minim) ' wylicza minimum z wartości B4:B103
rozmiar = (((maxim) - (minim)) / (7.5))
TextBox20.Text = (rozmiar)
TextBox3.Text = (maxim) 'to jest pierwsza komórka z przedziałów
PD5 = ((maxim) - (rozmiar))
TextBox4.Text = (PD5) 'to jest druga komórka z przedziałów
PD6 = ((PD5) - (rozmiar))
TextBox5.Text = (PD6) 'to jest trzecia komórka z przedziałów
PD7 = ((PD6) - (rozmiar))
TextBox7.Text = (PD7) 'to jest czwarta komórka z przedziałów
PD8 = ((PD7) - (rozmiar))
TextBox8.Text = (PD8) 'to jest piąta komórka z przedziałów
PD9 = ((PD8) - (rozmiar))
TextBox6.Text = (PD9) 'to jest szósta komórka z przedziałów
'CZ1 = Application.WorksheetFunction.Frequency("B4:B103", "D4:D9")
'TextBox10.Text = (CZ1) 'to jest szósta komórka z przedziałów
End With
End Sub
Nastepnie przycisk wyslij, wysyla te dane do excela.
' \\\ wyslanie danych do Excela /// '
Private Sub cmd_wyslij_Click()
'zatwierdzenie danych do wpisania
Dim początkowy_wiersz_tabeli, wiersz, kolumna, kolumna2 As Double
początkowy_wiersz_tabeli = -3
wiersz = Application.WorksheetFunction.CountA(Range("D:E")) + początkowy_wiersz_tabeli
'Range("D:E")- zakres, w którym jest tabela to D4:E9
kolumna = 4
'kolumna2 = 4
'i dalej:
Worksheets("2.2.1.").Cells(wiersz, kolumna) = TextBox3
Worksheets("2.2.1.").Cells(wiersz + 1, kolumna) = TextBox4
Worksheets("2.2.1.").Cells(wiersz + 2, kolumna) = TextBox5
Worksheets("2.2.1.").Cells(wiersz + 3, kolumna) = TextBox7
Worksheets("2.2.1.").Cells(wiersz + 4, kolumna) = TextBox8
Worksheets("2.2.1.").Cells(wiersz + 5, kolumna) = TextBox6
Problem polega na tym, ze chcialabym, aby wyliczalo czestosc, an podstawie tych otrzymanych danych. czyli na podstawei danych z B4:B103 oraz przedzialow Pd5 do PD9.
Proszę pomóźcie...
pozdrawiam serdecznie
ALICE |
|
wstecz 1 dalej wszystkich stron: 1
|
|