|
|
|
Где я ошибся, помогите.
|
|||
|---|---|---|---|
|
#18+
Опыта ниписания кода нет и как результат куча ошибок. Вот код. Нужно в первом столбце брать по 10 строк и меренести их в столбцы (транспонировать). Можно на другой лист в принципе но я не знаю как сделать. Посмотрите что здесь не так. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 08:47 |
|
||
|
Где я ошибся, помогите.
|
|||
|---|---|---|---|
|
#18+
Выводимая ошибка, Run-time error '-2147417848 (80010108)': Automation error Вызванный объект был отключен от клиентов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 09:10 |
|
||
|
Где я ошибся, помогите.
|
|||
|---|---|---|---|
|
#18+
Есть ли ограничения для функции транспонирования по длинне строки? у меня в ячейке может быть свыше 500 символов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 09:29 |
|
||
|
Где я ошибся, помогите.
|
|||
|---|---|---|---|
|
#18+
Ну у Вас тут много инетерсного :)... Я бы сделал так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 09:37 |
|
||
|
Где я ошибся, помогите.
|
|||
|---|---|---|---|
|
#18+
m (MaximuS)Но если Вы хотите, что Ваш код здесь раскритиковали - скажите :) Я не против будет на будущее наука)), мой код мне самому не нравиться не говоря о том что либо ощибуку выдает (выше указанную), либо вообще выкидывает excel(. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 09:57 |
|
||
|
Где я ошибся, помогите.
|
|||
|---|---|---|---|
|
#18+
Можна еще так, но тут что-то не понятно, когда вместо 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 09:58 |
|
||
|
Где я ошибся, помогите.
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 10:09 |
|
||
|
Где я ошибся, помогите.
|
|||
|---|---|---|---|
|
#18+
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" и оба на этап етранспонирования( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 10:27 |
|
||
|
Где я ошибся, помогите.
|
|||
|---|---|---|---|
|
#18+
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*, да меня все еще волнует сохранность ячеек где сотни символо, то что у меня выкидывало гдето первый символ и в конце появлялся треш эт я понял из-за того что не объявлял аеременные и не указывал тип, но в вашем коде должно быть нормльно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 10:42 |
|
||
|
Где я ошибся, помогите.
|
|||
|---|---|---|---|
|
#18+
ТСно ваш код мне больше нравится понятней какой именно код у Вас работает? первый или второй? ТСно в вашем коде должно быть нормльно? не понял что имеено должно быть нормально :)... но Вы же тестируете - и смотрите :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2009, 11:34 |
|
||
|
Где я ошибся, помогите.
|
|||
|---|---|---|---|
|
#18+
исплользую первый, говоряя , что ваш код должен7 работать, я имел ввиду что мой то вообще не работал, а если игнорировать выдоваемые ошибки, то получаются некоректные данные, (обрезаются длинные строки, проскакивает сдвиг ячеек ( переносится не в тот столбей) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2009, 08:26 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=36389245&tid=2178654]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
164ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 488ms |

| 0 / 0 |
