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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2011, 05:45   #1
ZHDN
Пользователь
 
Регистрация: 25.07.2011
Сообщений: 42
По умолчанию Проблема с макросом в Excel

Есть книга Excel на в которой прописан макрос:

Код:
Sub Кнопка2_Щелчок()
Dim FolderName2 As Range
  Set FolderName2 = ThisWorkbook.Worksheets("НСС").Range("Y1")
 Dim PathToSave As String, FolderName As String, FellPathToSave As String
 Dim fs As Object
 PathToSave = "E:\Новая Ведомость\2010\" '<--------------- Здесь укажи путь к папке в которую нужно сохранить книгу
 FolderName = FolderName2 '<--------------- Здесь задай название папки
 FellPathToSave = PathToSave & FolderName & "\"
 Set fs = CreateObject("Scripting.FileSystemObject")
 If Not fs.FolderExists(FellPathToSave) Then
   fs.CreateFolder (FellPathToSave)
 End If
 Application.ThisWorkbook.SaveAs FellPathToSave & "VedomostNSS_" & Format(Now, "DD_MM_YYYY HH_MM_SS") & ".xls"
End Sub

Создаю новую книгу там пишу там точно такой же макрос и он не работает. Подскажите в чем проблема. И если не сложно прокоментите код по строчкам а то я не когда не писал на VBA. Даже не знаю что происходит.
ZHDN вне форума Ответить с цитированием
Старый 04.08.2011, 07:30   #2
Watcher_1
Форумчанин
 
Аватар для Watcher_1
 
Регистрация: 22.06.2011
Сообщений: 325
По умолчанию

Когда вы создаете новую книгу то в ней должен быть лист
НСС (в макросе к нему идет обращение Worksheets("НСС"))
На этом листе в ячейке Y1 (Range("Y1")) должно находится имя папки куда будет сохраняться файл

Вроде все!
Заказать макрос можно на сайте http://excel4you.ru/
Watcher_1 вне форума Ответить с цитированием
Старый 04.08.2011, 07:34   #3
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Код:
Sub Кнопка2_Щелчок()
    Dim FolderName2 As Range
    Set FolderName2 = ThisWorkbook.Worksheets("НСС").Range("Y1")
    Dim PathToSave As String, FolderName As String, FellPathToSave As String
    Dim fs As Object
    PathToSave = "E:\Новая Ведомость"    '\2010\" '<--------------- Здесь укажи путь к папке в которую нужно сохранить книгу
    FolderName = FolderName2    '<--------------- Здесь задай название папки
    FellPathToSave = PathToSave    '& FolderName & "\"
    Set fs = CreateObject("Scripting.FileSystemObject")
    If Not fs.FolderExists(FellPathToSave) Then fs.CreateFolder FellPathToSave
    FellPathToSave = FellPathToSave & "\2010\"
    If Not fs.FolderExists(FellPathToSave) Then fs.CreateFolder FellPathToSave
    FellPathToSave = FellPathToSave & FolderName & "\"
    If Not fs.FolderExists(FellPathToSave) Then fs.CreateFolder FellPathToSave
    Application.ThisWorkbook.SaveAs FellPathToSave & "VedomostNSS_" & Format(Now, "DD_MM_YYYY HH_MM_SS") & ".xls"
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 04.08.2011, 09:45   #4
ZHDN
Пользователь
 
Регистрация: 25.07.2011
Сообщений: 42
По умолчанию

Спасибо большое за помошь
ZHDN вне форума Ответить с цитированием
Старый 04.08.2011, 12:08   #5
timkuptsov
 
Регистрация: 23.06.2011
Сообщений: 4
По умолчанию

У меня по проще проблемка...

Dim K, N, M As Double
K = 145.12
N = 1.2
K = K * 100
M = K Mod N

Почему M равно нулю, хоть убей не догоняю...
timkuptsov вне форума Ответить с цитированием
Старый 04.08.2011, 12:22   #6
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

А что вы хотите получить в результате? То, что вы написали эквивалентно 14512\1. Какой тут остаток от деления? Правильно - 0.
Вот справка:
The modulus, or remainder, operator divides number1 by number2 (rounding floating-point numbers to integers) and returns only the remainder as result. For example, in the following expression, A (result) equals 5.

A = 19 Mod 6.7
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 04.08.2011, 12:38   #7
timkuptsov
 
Регистрация: 23.06.2011
Сообщений: 4
По умолчанию

Хочу получить 0,4. Почему делится на 1, а не на 1,2?
timkuptsov вне форума Ответить с цитированием
Старый 04.08.2011, 13:06   #8
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Вы вообще не понимаете что такое оператор Mod. Этот оператор возвращает остаток от целочисленного деления. Т.е.
3 mod 3=0
4 mod 3=1
5 mod 3=2
6 mod 3=0 и т.д.
Вот эта строка: operator divides number1 by number2 (rounding floating-point numbers to integers) означает, что числа с плавающей запятой округляются до целого, в вашем случае 14512\1. Дальше см. мой предыдущий пост.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 04.08.2011, 13:18   #9
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Не знаю, откуда взялось 0.4, так можно получить остаток от дробного деления:
Public Sub www()
Dim K As Double, N As Double, M As Double ' Иначе K,N - variant
K = 145.12
N = 1.2
K = K * 100
M = K / N - Fix(K / N)
End Sub
М=0,333333333333781
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 04.08.2011 в 13:21.
kuklp вне форума Ответить с цитированием
Старый 04.08.2011, 13:31   #10
timkuptsov
 
Регистрация: 23.06.2011
Сообщений: 4
По умолчанию

Я руководствовался этим:

В следующем примере оператор Mod используется для деление одного числа на другое и возврата только остатка. Если оба числа являются числами с плавающей запятой, результат является числом с плавающей запятой, представляющим остаток.
Dim testResult As Double
testResult = 10 Mod 5
testResult = 10 Mod 3
testResult = 12 Mod 4.3
testResult = 12.6 Mod 5
testResult = 47.9 Mod 9.35

Выражения в предыдущем примере возвращает значения 0, 1, 3.4, 2.6 и 1.15.

Оригинал тут:
http://msdn.microsoft.com/ru-ru/library/se0w9esz.aspx

Соответственно: 14512 mod 1,2 должно быть 0,4
timkuptsov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка почты макросом Excel hunter27 Microsoft Office Excel 110 21.08.2014 13:48
переименование файлов в папке макросом из Excel xamillion Microsoft Office Excel 32 14.10.2013 11:48
Импорт данных из Word в Excel макросом vv66 Microsoft Office Excel 17 27.01.2012 14:49
Импорт данных из Excel в Excel макросом vnmz Microsoft Office Excel 2 04.03.2011 18:04