napisał: Rycho postów: 291
umieszczony: 30 maja 2007 22:43
|
|
Hej.
Fakt, nie zrozumiałem Sorry.
W basicu od zawsze (czyli od ZX Spectrum) przed użyciem Rnd inicjowałem generator liczb losowych aktualnym czasem systemowym przy pomocy Randomize, że nawet o tym nie pomyślałem.
Rycho |
|
napisał: Rycho postów: 291
umieszczony: 30 maja 2007 18:54
edytowany: 30 maja 2007 18:55
|
|
Hej.
1. Nieprawda. Funkcja Rnd losuje różne liczby.
Sub test1()
Dim i As Integer
Randomize
For i = 1 To 30
Cells(i, "A") = RndDblBetween(5, 6)
Cells(i, "B") = RndIntBetween(5, 6)
Next i
End Sub
Function RndDblBetween(Min As Double, Max As Double) As Double
RndDblBetween = Rnd * (Max - Min) + Min
End Function
Function RndIntBetween(Min As Integer, Max As Integer) As Integer
RndIntBetween = CInt(Rnd * (Max - Min) + Min)
End Function
2. Możesz to zrobić np. tak:
Sub Test2()
Dim lnw As Long 'liczba nowych wierszy
Dim rg As Range
lnw = 5
Set rg = Range("G8:I8")
rg.Copy
rg.Resize(lnw + 1).PasteSpecial xlPasteFormulas
Application.CutCopyMode = False
rg.Cells(1, 1).Select
End Sub
3. Rozwiązanie problemu jest ogólnie znane.
http://www.google.pl/search?hl=pl&q=excel+wykres+dynamiczny&btnG=Szukaj+w+Google&lr=lang_pl
powodzenia
Rycho |
|
napisał: Bitels82 postów: 2
umieszczony: 30 maja 2007 17:33
|
|
witam wszystkich
bawie się trochę w excelu vba na poziomie niżej niż podstawowym i napotkałem na pare problemów których sam nie jestem w stanie przeskoczyć :(
stworzyłem userform w którym znajduje się między innymi przycisk generowania tablicy w którym część kodu to:
For ia = 2 To 6
For i = 4 To TextBox5.Value + 3
Worksheets("Tablica").Cells(4, "x").Calculate
Worksheets("Tablica").Cells(i, ia) = Worksheets("Tablica").Cells(4, "x")
Next i
Next ia
liczba wierszy tablicy jest określana przez wartość podaną w TextBox5
w Worksheets("Tablica").Cells(4, "x") jest wpisana funkcja randbetwen
działa to poprawnie ale chciałbym zastąpić samo losowanie wyłącznie kodem wpisanym w VBA.
niestety niby Rnd losuje wartości ale są one zawsze takie same i nie chodzi tu o przedział losowania bo można go regulować
także prosze o podanie funkcji pochodnej od rnd która losuje za każdym razem inne wartości w danym przedziale
innym problemem jest przypisywanie formuł danym wierszom
przy założeniu że liczba wierszy nie będzie mniejsza niż 5 przypisałem pierwszym 5 wierszom formuły na sztywno
więc zarejestrowałem makro:
Range("G8:I8").Select
Selection.AutoFill Destination:=Range("G8:I9"), Type:=xlFillDefault
Range("G8:I9").Select
Range("G8:I8") - zawiera formuły przypisane do wierasza 8
chcąc je zmodyfikować znalazłem że np. Range("G8:I8") można również zapisać w postaci Range(Cells(8 , 7), Cells(8 , 9)), więc wrzuciłem do przycisku kod:
Range(Cells(8 , 7), Cells(8 , 9)).Select
Selection.AutoFill Destination:=Range(Cells(8 , 7), Cells(TextBox5.Value + 3 , 9)), Type:=xlFillDefault
Range(Cells(8 , 7), Cells(TextBox5.Value + 3 , 9)).Select
niestety to nie działa i nie wiem dlaczego bo lama jestem
można by ten problem rozwiązać również prostą pętlą for lub nawet while wend przypisując kolejnym komórkom formuły ale znowu nie wiem jak zrobić żeby przypisana formuła pobierała dane z odpowiednich wierszy
proszę o prosty przykład rozwiązania tego problemu a dalej juz se chyba sam poradze
ostatni problem tyczy się wykresów, gdzie potrzebuje żeby obszar obejmowania danej serii zmieniał się w zależności od umiejscowienia ostatniej wartości
i tu proszę o przykład który np. w wykres1 w arkuszu1 będzie zmieniał zakres wartości osi x w danej serii na Range("G4:Gx") gdzie x będzie w moim przypadku wartością TextBox5.Value + 3
przeglądałem to forum i nie znalazłem powyższych problemów, choc możliwe że się pojawiły, a ja nie potrafiłem zrozumieć kodu...
tak czy siak pozdrawiam i z góry dziękuje za wszelką pomoc |
|
wstecz 1 dalej wszystkich stron: 1
|