Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/16: Рейтинг темы: голосов - 16, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 5

Зацикливание

18.11.2010, 12:13. Показов 3427. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток!
Есть проблема -

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub ok_Click()
x = 0
 
With Application
.DefaultFilePath = "C:\BackUp" 
End With
 
Set fs = CreateObject("Scripting.FileSystemObject")
 
If Not fs.FolderExists("C:\BackUp") Then 
    fs.CreateFolder ("C:\BackUp")
End If
Application.DisplayAlerts = True 
 
 
Do While x < TextBox1.Value
x = x + 1
strNewName = x
Application.Workbooks(1).SaveAs strNewName
If x = TextBox1.Value Then Exit Do
Loop
 
End Sub
требуется создавать определенное кол-во копий, веденных пользователем. а он создает бесконечное число..О_о не вижу ошибки!помогите пожалуйста!!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.11.2010, 12:13
Ответы с готовыми решениями:

Зацикливание в процедуре обработки событий листа
Добрый день. Основное направление деятельности у меня другое (не программирование), но VBA приходиться изучать самостоятельно для...

Зацикливание в do while
Здравствуйте, пишу сюда впервые, такая ситуация: есть 2 таблицы эксель, нужно сравнить значения определенной колонки первой таблицы с...

зацикливание
Есть задание создать прогу тестирования с шифрованием задания, и самим тестом С шифрованиям я справился а вот тесты не выходят при...

10
128 / 23 / 3
Регистрация: 23.09.2010
Сообщений: 62
18.11.2010, 12:47
После закрытия формы, вот этого уже нет.
Цитата Сообщение от Green_Witch Посмотреть сообщение
TextBox1.Value
Надо поместить значение
Visual Basic
1
TextBox1.Value
в переменную.
0
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 5
18.11.2010, 16:45  [ТС]
Форма не закрывается после нажатии Этой кнопки...она закрывается вручную.по идее тогда значение не должно пропадать!
0
204 / 43 / 6
Регистрация: 15.10.2010
Сообщений: 125
18.11.2010, 16:58
Форма не закрывается после нажатия кнопки, т.к. у вас в процедуре и не прописано скрытие формы. Перед End Sub должно быть

Visual Basic
1
НазвФормы.Hide
0
128 / 23 / 3
Регистрация: 23.09.2010
Сообщений: 62
18.11.2010, 17:10
Вот так попробуйте:
Visual Basic
1
2
Dim x As Long
Do While x < CLng(TextBox1.Value)
В вашем случае сравнивается число и строка.
0
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 5
19.11.2010, 10:09  [ТС]
Добавлено через 45 минут
спасибо!все,сделала
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Private Sub ok_Click()
 
With Application
.DefaultFilePath = "C:\BackUp"
End With
 
Set fs = CreateObject("Scripting.FileSystemObject")
 
If Not fs.FolderExists("C:\BackUp") Then
    fs.CreateFolder ("C:\BackUp")
End If
Application.DisplayAlerts = True
 
If TextBox1.Value = "" Then
    MsgBox "Укажите количество копий"
Else
    Dim x As Long
    x = 0
    Do While x < CLng(TextBox1.Value)
    x = x + 1
    strNewName = x
    Application.Workbooks(1).SaveAs strNewName
    If x = CLng(TextBox1.Value) Then Exit Do
    UserForm1.Hide
    Loop
End If
End Sub
только все равно странно что он закрывает файл с которого копии делаются и открывает последний сохранившийся!
0
204 / 43 / 6
Регистрация: 15.10.2010
Сообщений: 125
19.11.2010, 10:19
естественно он выводит ошибку, т.к. Вы изначально определяете переменную Txt как числовую, в результате чего не даете ей присвоить никаких значений кроме числа. Определите ее как вариативную. Например, так.

Visual Basic
1
2
3
4
5
6
7
Sub Text1()
 
 
Dim Txt
Txt = InputBox("Input")
If Val(Txt) = 0 And Txt <> 0 Then MsgBox ("Txt íå ÷èñëî")
End Sub
0
128 / 23 / 3
Регистрация: 23.09.2010
Сообщений: 62
19.11.2010, 11:23
Цитата Сообщение от Green_Witch Посмотреть сообщение
только все равно странно что он закрывает файл с которого копии делаются и открывает последний сохранившийся!
так запрограммировано.

Добавлено через 36 минут
Green_Witch , вот так можно копировать оригинальный файл:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub FilSystemObject()
Dim oFileSystemObject As Object
Dim x As Long
Set oFileSystemObject = CreateObject("Scripting.FileSystemObject")
x = InputBox("Копирование файлов")
If x > 0 Then
    For x = 1 To CLng(x)
        oFileSystemObject.Copyfile "C:\Копирование\Копировать этот файл.xls", "C:\Копирование\Копировать этот файл_" & x & ".xls"
    Next
End If
End Sub
0
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 5
24.11.2010, 11:51  [ТС]
вот еще проблема в коде

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
With Application.FileSearch 'открыть файлы для расчета
            .NewSearch
            .LookIn = dir.Caption
            .FileType = msoFileTypeExcelWorkbooks
            .Execute
        If .Execute() > 0 Then
            For i = 1 To .FoundFiles.Count
                Set WB = Workbooks.Open(.FoundFiles(i), , False)
                
                WB.Activate
                Cells.Select
                Selection.copy
                
                ThisWorkbook.Activate 'создать новый лист i
                Dim newlisto As Worksheet
                Set newlisto = ActiveWorkbook.Worksheets.Add
                newlisto.Name = i
                newlisto.Visible = xlSheetVisible
                              
                ThisWorkbook.Worksheets(i).Activate 'вставить данные из исходной таблицы
                Cells.Select
                ActiveSheet.Paste
                
                Application.CutCopyMode = False 'очистить буфер и закрыть исходную таблицу
                WB.Close
 
                          Next i
        End If
        End With
мне нужно чтоб поочередно открывались файлы и из каждого копировались данные в новые листы книги в которой это все происходит.потом открытые файлы должны закрываться

в результате Этого кода
-открываются файлы
-создаются новые листы в ThisWorkbook
НО данные копируются из последнего открытого файла в самый первый созданный лист! а остальные листы чистые!
подскажите - где проблема в коде??
0
204 / 43 / 6
Регистрация: 15.10.2010
Сообщений: 125
24.11.2010, 23:20
А зачем так? Есть вариант проще:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim wbk
 
wbk = ThisWorkbook.Name
 
With Application.FileSearch 'открыть файлы для расчета
            .NewSearch
            .LookIn = dir.Caption
            .FileType = msoFileTypeExcelWorkbooks
            .Execute
        If .Execute() > 0 Then
            For i = 1 To .FoundFiles.Count
                Set WB = Workbooks.Open(.FoundFiles(i), , False)
WB.Activate
 
ActiveSheet.Move Before:=Workbooks(wbk).Sheets(1)
ActiveSheet.Name=i
 
  WB.Close
 
                          Next i
        End If
А не нравится переброс листа "Move Before", сделайте копирование:

Visual Basic
1
ActiveSheet.Copy Before:=Workbooks(wbk).Sheets(1)
1
0 / 0 / 0
Регистрация: 18.11.2010
Сообщений: 5
25.11.2010, 09:19  [ТС]
спасибо все работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.11.2010, 09:19
Помогаю со студенческими работами здесь

Зацикливание
Как то давно видел способ выполнять действие без конечно без while или других ресурсо емких способов. Вобщем кто знает как выполнять код...

Зацикливание
Пишу функцию задержки: function delay(ms) { var d_handler = new Date(); var current = d_handler.getMilliseconds(); ...

Зацикливание
есть таких два кода. как только срабатывает header() , перебрасывает на ту страницу что указываю но её неотображает а пишет что на эту...

Зацикливание
Как исправить? Зацикливается на процедуре crlf data segment string db 80 dup('$'),'$' data ends code segment assume...

зацикливание
Не выдает нужного результата происходит зацыкливание // wer.cpp : Defines the entry point for the console application. // ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru