Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2012, 18:34   #11
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

Hugo121, ааа..

ну все равно эта строка не хочет работать.. object or... not defined
Bape}l{ka вне форума Ответить с цитированием
Старый 12.01.2012, 18:41   #12
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

писал здесь не открывая ексель... вот и написал))
исправил, проверил на Вашем примере, работает.
Код:
Sub aaaaaaa()
Dim r As Integer, c As Integer
  Call Subs_.DefinitionSelectionRowCol 'ActiveWorkbook.ActiveSheet.
  For r = FirstRow To MaxRow
    c = Range(Cells(r, FirstCol), Cells(r, MaxCol)).SpecialCells(4).Cells.Count
    If c > 0 Then Cells(r, MaxCol + 1).Resize(1, c).Insert Shift:=xlToRight
  Next
  Range(Cells(FirstRow, FirstCol), Cells(MaxRow, MaxCol)).SpecialCells(4).Delete Shift:=xlToLeft
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 12.01.2012, 18:41   #13
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

люди ,если не трудно, тестите в примере ваши решения, я его выложила тремя постами выше...

IgorGO, теперь вообще глобальная ошибка О_о я таких даже не встречала
Код:
Range(r, MaxCol + 1).Resize(1, c).Insert Shift:=xlToRight
Bape}l{ka вне форума Ответить с цитированием
Старый 12.01.2012, 18:45   #14
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Глобальная ошибка здесь - это я.
а в коде было две локальных (опечатки)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 12.01.2012, 19:04   #15
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

спасибо всем большое !!! урраа!!

IgorGO, оно работает!!! )))))))))

фух.. /утерла пот со лба
Bape}l{ka вне форума Ответить с цитированием
Старый 12.01.2012, 21:02   #16
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

хм.. IgorGO, вы просто объявили переменные, или там еще что-то было? я вроде ничего больше не вижу..
а я тоже пробовала объявлять, но подумала, что с это Range =ь
_________________________________

п.с.: ну собственно жаль, что мое решение никак не подправили, т.к. тоже вроде ничего на фоне смотрится =ь
И все-таки я не понимаю, почему при Exit For выходит не из одного цикла, не из всех трех, а только из двух! где логика??
Bape}l{ka вне форума Ответить с цитированием
Старый 12.01.2012, 23:37   #17
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Код:
dim i&,j&,x&, a as boolean,b as boolean
for i=1 to 10

  for j=1 to 10
       for x=1 to 10
            if x=5 then a=true:exit for
       next
       if a then b=true:exit for
   next
    if b then exit for  
next
Варежка, для выхода из всех циклов можно использовать такой подход
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 13.01.2012, 09:20   #18
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
для выхода из всех циклов можно использовать такой подход
В данном случае, правильнее использовать Goto
(это один из немногих случаев, где использование данного оператора обосновано)

Код:
Sub test()
    Dim i&, j&, x&, a As Boolean, b As Boolean
    For i = 1 To 10
        For j = 1 To 10
            For x = 1 To 10
                If x = 5 Then GoTo КонецЦикла
            Next
        Next
    Next
КонецЦикла:
    Debug.Print i, j, x
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 13.01.2012, 09:57   #19
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

нет, мне как раз надо было, чтоб выходило только из самого внутреннего цикла (у меня всего один exit for), но почему-то останавливалось 2 внутренних цикла, а третий, внешний, продолжал работать... надо еще посидеть подумать, может я что-то просто не уловила =ь

R Dmitry
, EducatedFool, спасибо за подсказки)
Bape}l{ka вне форума Ответить с цитированием
Старый 13.01.2012, 11:40   #20
slan
Форумчанин
 
Аватар для slan
 
Регистрация: 30.01.2008
Сообщений: 314
По умолчанию

варежка, в вашем коде нужно поправить :
Код:
   For Roww = FirstRow To MaxRow
        Set rng = Range(Cells(Roww, FirstCol), Cells(Roww, MaxCol))
        For Each iCell In rng
            If Not IsEmpty(iCell) Then
                For Each x In rng
                    If IsEmpty(x) Then
                        x.Value = iCell.Value
                        iCell.Value = ""
                        Exit For
                    End If
                Next x
            End If
        Next iCell
    Next Roww

в принципе, еще есть что править, но это минимум

ps пустую ячейку слева от текущей можно и так найти:

icell.end(xltoleft).offset(,1)

правда все равно надо проверить пуста ли она..

Последний раз редактировалось slan; 13.01.2012 в 11:41. Причина: выделение кода
slan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подмена оконной процедуры, Как правильно завершить? eduard93 Win Api 0 08.09.2011 16:45
Как правильно задать цикл? BingoBongo Общие вопросы Delphi 12 07.05.2011 09:09
Как правильно завершить поток cosmic_call Общие вопросы Delphi 2 13.02.2011 05:32
Как правильно завершить поток Des Общие вопросы Delphi 5 08.05.2009 20:56
Как корректно завершить цикл? Iren Microsoft Office Excel 4 02.11.2007 09:58