Страница 1 из 2
Как передать данные из RefEdit в массив, создаваемый в проц.
Добавлено: 21 сен 2005, 15:10
Zhanibek
Zdravstvuite!
Pozhaluista pomogite perenesti dannye iz RefEdita (diapazon yachhek) v massiv, sozdavaemy v procedure.
Potom neobhodimo perevesti dannye iz formata daty v format chisel.
Zaranee spasibo!
Добавлено: 21 сен 2005, 17:03
pashulka
Если RefEdit действительно содержит адрес диапазона, то "перебрать" все ячейки можно так :
Код: Выделить всё
For Each iCell In Range(RefEdit1)
If Not IsError(iCell.Value) Then
MsgBox iCell.Value, , ""
End If
Next
или так :
Код: Выделить всё
iMassiv = Range(RefEdit1).Value
For Each iValue In iMassiv
If Not IsError(iValue) Then
MsgBox iValue, , ""
End If
Next
Добавлено: 21 сен 2005, 17:16
Zhanibek
iMassiv = Range(RefEdit1).Value
Этим методом пытался, выдает "Run-Time error 13 Type mismatch"
Kod takoi:
Dim Meas_Time() As Integer
Meas_Time = Range(RefEdit4).Value
Znachenie RefEdit po add watch: "Sheet1!A13:A20"
Pervy sposob ne podhodit. Mne nuzhno zgnat' dannye v massiv (dynamicheski?, poskol'ku neizvestno, kakoi diapazon budet vibran), chtoby vypolnyat' dal'neishie raschety.
Spasibo, chto otkliknulis'!
Добавлено: 21 сен 2005, 17:37
pashulka
И правильно, что выдаёт ошибку, ведь у Вас
RefEdit4 а код -
Добавлено: 21 сен 2005, 17:41
Zhanibek
Dim Meas_Time() As Integer
Meas_Time = Range(RefEdit4).Value
Da net v kode vse vrode verno...
Добавлено: 21 сен 2005, 17:56
pashulka
Подождите, Вы говорили, что ошибку выдаёт именно мой пример … а я ведь не описывал переменную iMassiv, потому что в таком случае она будеть иметь тип Variant (как ей и положено)
Добавлено: 22 сен 2005, 03:49
Zhanibek
Spasibo vsem!
Problema reshilas' sleduishim obrazom:
Dim DT_Range(1000) As single
For Each c In ActiveSheet.Range(RefEdit4.Value)
If c.Value > 0.0001 Then
n = n + 1
DT_Range(n) = c.Value
MsgBox DT_Range(n)
End If
Next c
Vse iz-za nedostatochnogo znania sintaksisa programmy.
Добавлено: 22 сен 2005, 11:10
pashulka
А по-моему проблема заключалась в том, что Вы сначала изменяли первоначальный код, а только затем тестировали :P
Кстати, с помощью элемента управления RefEdit можно выделять ячейки и неактивного рабочего листа, и ещё Вы можете использовать динамический массив :
Код: Выделить всё
Dim iMassiv() As Double
For Each iCell In Range(RefEdit4.Value)
If Not IsError(iCell.Value) Then
If iCell.Value > 0.0001 Then
iCount = iCount + 1
ReDim Preserve iMassiv(1 To iCount)
iMassiv(iCount) = iCell.Value
MsgBox iMassiv(iCount)
End If
End If
Next
Добавлено: 24 сен 2005, 00:12
pashulka
Кстати, можно ещё попробовать использовать коллекцию, например :
Код: Выделить всё
Dim iCollection As New Collection
For Each iCell In Range(RefEdit4.Value)
If Not IsError(iCell.Value) And IsDate(iCell.Value) Then
iCollection.Add CDbl(iCell.Value)
MsgBox iCollection.Item(iCollection.Count)
End If
Next
Добавлено: 24 сен 2005, 03:01
Zhanibek
Spasibo bol'shoe i otkuda Vy eto vse uznaete? Spravka Excel molchit kak partizan. Kogda chto nibud' nado, nikogda ne naidesh'.
Uveren, chto privedennye Vami primery mne eshe prigodyatsya.
Кстати, можно ещё попробовать использовать коллекцию, например :
Код:
Dim iCollection As New Collection
For Each iCell In Range(RefEdit4.Value)
If Not IsError(iCell.Value) And IsDate(iCell.Value) Then
iCollection.Add CDbl(iCell.Value)
MsgBox iCollection.Item(iCollection.Count)
End If
Next