Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Где я ошибся, помогите. / 12 сообщений из 12, страница 1 из 1
28.12.2009, 08:47
    #36389193
tem1112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где я ошибся, помогите.
Опыта ниписания кода нет и как результат куча ошибок. Вот код. Нужно в первом столбце брать по 10 строк и меренести их в столбцы (транспонировать). Можно на другой лист в принципе но я не знаю как сделать. Посмотрите что здесь не так.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub ju()
    s =  1 
    st =  1 
    sk =  1 
    stk =  2 
    Dim oRange
    Set oRange = Worksheets("Ëèñò3").Range(Cells(s, st), Cells(s +  9 , st))
For Each oRange In Selection
    Dim oRange1
    Set oRange1 = Worksheets("Ëèñò3").Range(Cells(s, st), Cells(s +  9 , st))
    Dim oRange2
    Set oRange2 = Worksheets("Ëèñò3").Range(Cells(sk, stk), Cells(sk, stk +  9 ))
        oRange2.Value = Application.Transpose(oRange1)
        s = s +  10 
        sk = sk +  1 
Next
End Sub
...
Рейтинг: 0 / 0
28.12.2009, 09:10
    #36389210
tem1112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где я ошибся, помогите.
Выводимая ошибка,
Run-time error '-2147417848 (80010108)':

Automation error
Вызванный объект был отключен от клиентов.
...
Рейтинг: 0 / 0
28.12.2009, 09:29
    #36389226
tem1112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где я ошибся, помогите.
Есть ли ограничения для функции транспонирования по длинне строки? у меня в ячейке может быть свыше 500 символов
...
Рейтинг: 0 / 0
28.12.2009, 09:37
    #36389234
m (MaximuS)
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где я ошибся, помогите.
Ну у Вас тут много инетерсного :)...
Я бы сделал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub PrimerT()
Dim i As Integer

For i =  10  To  110  Step  10 
Range(Cells(i -  9 ,  1 ), Cells(i,  1 )).Copy
Sheets(ActiveSheet.Index +  1 ).Cells(i /  10 ,  1 ).PasteSpecial Transpose:=True
Next i

End Sub
Но если Вы хотите, что Ваш код здесь раскритиковали - скажите :)
...
Рейтинг: 0 / 0
28.12.2009, 09:57
    #36389245
tem1112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где я ошибся, помогите.
m (MaximuS)Но если Вы хотите, что Ваш код здесь раскритиковали - скажите :)
Я не против будет на будущее наука)), мой код мне самому не нравиться не говоря о том что либо ощибуку выдает (выше указанную), либо вообще выкидывает excel(.
...
Рейтинг: 0 / 0
28.12.2009, 09:58
    #36389247
m
m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где я ошибся, помогите.
Можна еще так, но тут что-то не понятно, когда вместо Range(Cells(i / 10, 1), Cells(i / 10, 10)) подставляю Range("A1:J1"), все работает, а с Cells не хочет. Может кто подскажет почему. Вообще это метод (Transpose) странный, его даже нет в Object Browser.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub PrimerT()
Dim i As Integer

For i =  10  To  110  Step  10 
'Range("A1:J1").Select
'Range(Cells(i / 10, 1), Cells(i / 10, 10)).Select
Sheets(ActiveSheet.Index +  1 ).Range(Cells(i /  10 ,  1 ), Cells(i /  10 ,  10 )).Value = Application.Transpose(ThisWorkbook.Sheets(ActiveSheet.Index).Range(Cells(i -  9 ,  1 ), Cells(i,  1 )).Value)


Next i

End Sub
...
Рейтинг: 0 / 0
28.12.2009, 10:09
    #36389259
m
m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где я ошибся, помогите.
Sub ju()
s = 1 'вот эти все переменные, не объявленные, лучше всегда объявлять
st = 1 'вот эти все переменные, не объявленные, лучше всегда объявлять
sk = 1 'вот эти все переменные, не объявленные, лучше всегда объявлять
stk = 2 'вот эти все переменные, не объявленные, лучше всегда объявлять
Dim oRange 'переменная объявленная, не указан тип, лучше указывать, если не указан будет присвоен самый объемный (по памяти) тип Variant
Set oRange = Worksheets("Ëèñò3").Range(Cells(s, st), Cells(s + 9, st)) 'здесь вероятно Вы забыли цикл сделать,так как s и st должны меняться, хотя может это вообще лишняя строчка
For Each oRange In Selection 'цикл Вы запустили здесь, но Эксель не знает что такое oRange, тоже не объявленная, нужно объявить как Dim oRange as Range, в любом случае, даже если есть выделение, ексель будет проходить по каждой ячейке, а Вам нужно перескакивать по 10 смотрите мой код
Dim oRange1 'все объявления желательно делать в начале кода, опять нет типа
Set oRange1 = Worksheets("Ëèñò3").Range(Cells(s, st), Cells(s + 9, st))
Dim oRange2 'все объявления желательно делать в начале кода, опять нет типа
Set oRange2 = Worksheets("Ëèñò3").Range(Cells(sk, stk), Cells(sk, stk + 9))
oRange2.Value = Application.Transpose(oRange1)
s = s + 10
sk = sk + 1
Next
End Sub
...
Рейтинг: 0 / 0
28.12.2009, 10:27
    #36389286
tem1112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где я ошибся, помогите.
mSub ju()
s = 1 'вот эти все переменные, не объявленные, лучше всегда объявлять
st = 1 'вот эти все переменные, не объявленные, лучше всегда объявлять
sk = 1 'вот эти все переменные, не объявленные, лучше всегда объявлять
stk = 2 'вот эти все переменные, не объявленные, лучше всегда объявлять
Dim oRange 'переменная объявленная, не указан тип, лучше указывать, если не указан будет присвоен самый объемный (по памяти) тип Variant
Set oRange = Worksheets("Ëèñò3").Range(Cells(s, st), Cells(s + 9, st)) 'здесь вероятно Вы забыли цикл сделать,так как s и st должны меняться, хотя может это вообще лишняя строчка
For Each oRange In Selection 'цикл Вы запустили здесь, но Эксель не знает что такое oRange, тоже не объявленная, нужно объявить как Dim oRange as Range, в любом случае, даже если есть выделение, ексель будет проходить по каждой ячейке, а Вам нужно перескакивать по 10 смотрите мой код
Dim oRange1 'все объявления желательно делать в начале кода, опять нет типа
Set oRange1 = Worksheets("Ëèñò3").Range(Cells(s, st), Cells(s + 9, st))
Dim oRange2 'все объявления желательно делать в начале кода, опять нет типа
Set oRange2 = Worksheets("Ëèñò3").Range(Cells(sk, stk), Cells(sk, stk + 9))
oRange2.Value = Application.Transpose(oRange1)
s = s + 10
sk = sk + 1
Next
End Sub
спасибо, поправлю, но ваш код мне больше нравится понятней, но они оба выдают ошибку( "Subscript out of range" или "type mismatch" и оба на этап етранспонирования(
...
Рейтинг: 0 / 0
28.12.2009, 10:42
    #36389319
tem1112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где я ошибся, помогите.
tem1112mSub ju()
s = 1 'вот эти все переменные, не объявленные, лучше всегда объявлять
st = 1 'вот эти все переменные, не объявленные, лучше всегда объявлять
sk = 1 'вот эти все переменные, не объявленные, лучше всегда объявлять
stk = 2 'вот эти все переменные, не объявленные, лучше всегда объявлять
Dim oRange 'переменная объявленная, не указан тип, лучше указывать, если не указан будет присвоен самый объемный (по памяти) тип Variant
Set oRange = Worksheets("Ëèñò3").Range(Cells(s, st), Cells(s + 9, st)) 'здесь вероятно Вы забыли цикл сделать,так как s и st должны меняться, хотя может это вообще лишняя строчка
For Each oRange In Selection 'цикл Вы запустили здесь, но Эксель не знает что такое oRange, тоже не объявленная, нужно объявить как Dim oRange as Range, в любом случае, даже если есть выделение, ексель будет проходить по каждой ячейке, а Вам нужно перескакивать по 10 смотрите мой код
Dim oRange1 'все объявления желательно делать в начале кода, опять нет типа
Set oRange1 = Worksheets("Ëèñò3").Range(Cells(s, st), Cells(s + 9, st))
Dim oRange2 'все объявления желательно делать в начале кода, опять нет типа
Set oRange2 = Worksheets("Ëèñò3").Range(Cells(sk, stk), Cells(sk, stk + 9))
oRange2.Value = Application.Transpose(oRange1)
s = s + 10
sk = sk + 1
Next
End Sub
спасибо, поправлю, но ваш код мне больше нравится понятней, но они оба выдают ошибку( "Subscript out of range" или "type mismatch" и оба на этап етранспонирования(

прошу прощения я лист не добавил))*WALL*,
да меня все еще волнует сохранность ячеек где сотни символо, то что у меня выкидывало гдето первый символ и в конце появлялся треш эт я понял из-за того что не объявлял аеременные и не указывал тип, но в вашем коде должно быть нормльно?
...
Рейтинг: 0 / 0
28.12.2009, 11:34
    #36389398
m
m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где я ошибся, помогите.
ТСно ваш код мне больше нравится понятней
какой именно код у Вас работает? первый или второй?
ТСно в вашем коде должно быть нормльно?
не понял что имеено должно быть нормально :)... но Вы же тестируете - и смотрите :).
...
Рейтинг: 0 / 0
29.12.2009, 08:26
    #36391124
tem1112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где я ошибся, помогите.
исплользую первый, говоряя , что ваш код должен7 работать, я имел ввиду что мой то вообще не работал, а если игнорировать выдоваемые ошибки, то получаются некоректные данные, (обрезаются длинные строки, проскакивает сдвиг ячеек ( переносится не в тот столбей)
...
Рейтинг: 0 / 0
29.12.2009, 08:27
    #36391125
tem1112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где я ошибся, помогите.
ТАк что буду использовать ваш код, спасибо за помощь
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Где я ошибся, помогите. / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]