Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Копирование листав Экселе / 17 сообщений из 17, страница 1 из 1
04.03.2008, 12:58
    #35169330
dd44
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование листав Экселе
Всем доброго времени суток,
Вот столкнулся с такой проблемой:
В хелпе по функции Copy сказано: "If you don't specify either Before or After, Microsoft Excel creates a new workbook that contains the copied sheet.", т.е. если я копирую лист вникуда (Worksheets("List1").Copy), то Эксел должен содать новый документ с этим листом, НО, этого не происходит.
Подскажите, в чем проблема?
...
Рейтинг: 0 / 0
04.03.2008, 15:35
    #35170093
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование листав Экселе
А что происходит?
...
Рейтинг: 0 / 0
04.03.2008, 15:42
    #35170129
dd44
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование листав Экселе
vkodorА что происходит?
Ничего ((
даже ошибки не выдает.


Тут еще одна гадость:
В текстбоксе есть цифровое значение, когда присваиваю это значение ячейке, то присваивается как текст. Делаю это так:
Код: plaintext
1.
2.
        .Cells(lngNewLastRow,  6 ) = Me.TextBox1.Value                    'Summ
        .Cells(lngNewLastRow,  6 ).NumberFormat = "#,##0.00"          'Formating Summ
А тут в чем беда?
...
Рейтинг: 0 / 0
04.03.2008, 15:48
    #35170158
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование листав Экселе
Делаю это так:
>
> .Cells(lngNewLastRow, 6) = Me.TextBox1.Value
> 'Summ
> .Cells(lngNewLastRow, 6).NumberFormat = "#,##0.00"
> 'Formating Summ
> А тут в чем беда?

Не правильный порядок строк :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
04.03.2008, 15:56
    #35170198
dd44
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование листав Экселе
Игорь Горбонос
Не правильный порядок строк :)

Posted via ActualForum NNTP Server 1.4
Что, просто поменять местами строки?
Код: plaintext
1.
2.
.Cells(lngNewLastRow,  6 ).NumberFormat = "#,##0.00"
.Cells(lngNewLastRow,  6 ) = Me.TextBox1.Value
Ща убьюсь ап стену если так сработает ))
...
Рейтинг: 0 / 0
04.03.2008, 15:57
    #35170207
dd44
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование листав Экселе
Нет не убьюсь, надо еще выяснить почему лист не копируется.

Помогите с копированием плизззз.
...
Рейтинг: 0 / 0
04.03.2008, 16:15
    #35170299
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование листав Экселе
Вообще-то, действительно при выполнении строки
Код: plaintext
Worksheets("List1").Copy
должна создаться новая книга.
мной этот код ни раз использовался и все работало в порядке
А вы пробовали отдельно эту строку?
Осмелюсь предположить, что у вас в коде стоит
Код: plaintext
On error resume next
при выполнении происходит ошибка, но она откладывается и поэтому ничего не происходит.
Уберите эту строку и посмотрите что за ошибка.
...
Рейтинг: 0 / 0
04.03.2008, 16:23
    #35170335
dd44
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование листав Экселе
Уважаемый vkodor,
строки on error... у меня нет.

Более того, записываю макрос в одну строку, потом нажимаю выполнить и ничего ((
...
Рейтинг: 0 / 0
04.03.2008, 16:29
    #35170368
dd44
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование листав Экселе
dd44 Игорь Горбонос
Не правильный порядок строк :)

Posted via ActualForum NNTP Server 1.4
Что, просто поменять местами строки?
Код: plaintext
1.
2.
.Cells(lngNewLastRow,  6 ).NumberFormat = "#,##0.00"
.Cells(lngNewLastRow,  6 ) = Me.TextBox1.Value
Ща убьюсь ап стену если так сработает ))

Поменял строки местами, НЕ РАБОТАЕТ. ААААААА
...
Рейтинг: 0 / 0
04.03.2008, 16:34
    #35170392
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование листав Экселе
Прикрепите пример.
...
Рейтинг: 0 / 0
04.03.2008, 16:39
    #35170419
dd44
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование листав Экселе
vkodorПрикрепите пример.
Пример чего?
С числами я разобрался:
Если ячейке присваиваешь числовое значение тексбокса с дробным разделителем "," то он воспринимает это как текст, дальнейшее форматирование ячейки не помогает, остается текстом.
Если дробный разделитеь "." то все ОК.
НО тут проблема заключается в проверке значения тексбокса на число, так например, при дробном разделителе "." функция IsNumeric(me.textbox1) выдает ошибку.
Как с этим бороться?
...
Рейтинг: 0 / 0
04.03.2008, 16:46
    #35170449
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование листав Экселе
Если после нажатия на кнопку не сформируется новая книга, выкиньте Excel
...
Рейтинг: 0 / 0
04.03.2008, 16:51
    #35170494
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование листав Экселе
> НО тут проблема заключается в проверке значения тексбокса на число,
> так например, при дробном разделителе "." функция IsNumeric(me.textbox1)
> выдает ошибку.
> Как с этим бороться?

Использовать Val и наконец-то воспользоватся кнопкой F1 ;)

МСДНFor example, you cannot perform any arithmetic operations on the
value U2 even though it contains a numeric character, because the entire
value is not a valid number. Likewise, you cannot perform any calculations
on the value 1040EZ; however, you can perform calculations on the values +10
or -1.7E6 because they are valid numbers. For this reason, you often want to
determine if a Variant variable contains a value that can be used as a
number. The IsNumeric function performs this task:

Do
anyNumber = InputBox("Enter a number")
Loop Until IsNumeric(anyNumber)
MsgBox "The square root is: " & Sqr(anyNumber)

When Visual Basic converts a representation that is not numeric (such as a
string containing a number) to a numeric value, it uses the Regional
settings (specified in the Windows Control Panel) to interpret the thousands
separator, decimal separator, and currency symbol.

Thus, if the country setting in the Windows Control Panel is set to United
States, Canada, or Australia, these two statements would return true:

IsNumeric("$100")
IsNumeric("1,560.50")

While these two statements would return false:

IsNumeric("DM100")
IsNumeric("1.560,50")

However, the reverse would be the case — the first two would return false
and the second two true — if the country setting in the Windows Control
Panel was set to Germany.

If you assign a Variant containing a number to a string variable or
property, Visual Basic converts the representation of the number to a string
automatically. If you want to explicitly convert a number to a string, use
the CStr function. You can also use the Format function to convert a number
to a string that includes formatting such as currency, thousands separator,
and decimal separator symbols. The Format function automatically uses the
appropriate symbols according to the Regional Settings Properties dialog box
in the Windows Control Panel.

For More Information See "Format Function" and topics about the conversion
functions in the Language Reference. For information on writing code for
applications that will be distributed in foreign markets, see "International
Issues."

МСДНNote The Val function recognizes only the period (.) as a valid
decimal separator. When different decimal separators are used, as in
international applications, use CDbl instead to convert a string to a
number.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
04.03.2008, 17:06
    #35170575
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование листав Экселе
dd44 vkodorПрикрепите пример.
Пример чего?
С числами я разобрался:
Если ячейке присваиваешь числовое значение тексбокса с дробным разделителем "," то он воспринимает это как текст, дальнейшее форматирование ячейки не помогает, остается текстом.
Если дробный разделитеь "." то все ОК.
НО тут проблема заключается в проверке значения тексбокса на число, так например, при дробном разделителе "." функция IsNumeric(me.textbox1) выдает ошибку.
Как с этим бороться?
Лучше не проверять, а разрешать вводить только нужные символы.
Код: plaintext
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 Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal Flags As Long) As Long
Private Const kb_lay_en As Long =  67699721 
Private Const kb_lay_ru As Long =  68748313 
Private Sub TextBox41_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If Shift =  0  Then
        If KeyCode =  13  Then
            
        ElseIf KeyCode =  8  Or KeyCode =  9  Or KeyCode =  35  Or KeyCode =  36  Or KeyCode =  37  Or KeyCode =  39  Or KeyCode =  46  Then
            '8-backspace, 9-tab, 37-стрелка влево, 39-стрелка вправо, 46-delete _
                 35 - 36 -Home/End
        ElseIf KeyCode =  110  Then
            'разделитель на добавочном блоке
            KeyCode = IIf(GetKeyboardLayout( 0 ) = kb_lay_en,  190 ,  191 )
            If InStr(Me.TextBox41, ".") >  0  Then KeyCode =  0 
        ElseIf (KeyCode >  47  And KeyCode <  58 ) Or (KeyCode >  95  And KeyCode <  106 ) Then
            'цифры
        Else
            KeyCode =  0 
        End If
    ElseIf Shift =  5  And KeyCode =  16  Then
        'перевод раскладки клавы
    ElseIf Shift =  1  And KeyCode =  35  Or KeyCode =  36  Or KeyCode =  37  Or KeyCode =  39  Then
        'Shift стрелка влево/вправо
    Else
        KeyCode =  0 
    End If
End Sub
...
Рейтинг: 0 / 0
05.03.2008, 15:05
    #35173029
dd44
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование листав Экселе
vkodor dd44 vkodorПрикрепите пример.
Пример чего?
С числами я разобрался:
Если ячейке присваиваешь числовое значение тексбокса с дробным разделителем "," то он воспринимает это как текст, дальнейшее форматирование ячейки не помогает, остается текстом.
Если дробный разделитеь "." то все ОК.
НО тут проблема заключается в проверке значения тексбокса на число, так например, при дробном разделителе "." функция IsNumeric(me.textbox1) выдает ошибку.
Как с этим бороться?
Лучше не проверять, а разрешать вводить только нужные символы.
Код: plaintext
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 Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
Private Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal Flags As Long) As Long
Private Const kb_lay_en As Long =  67699721 
Private Const kb_lay_ru As Long =  68748313 
Private Sub TextBox41_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If Shift =  0  Then
        If KeyCode =  13  Then
            
        ElseIf KeyCode =  8  Or KeyCode =  9  Or KeyCode =  35  Or KeyCode =  36  Or KeyCode =  37  Or KeyCode =  39  Or KeyCode =  46  Then
            '8-backspace, 9-tab, 37-стрелка влево, 39-стрелка вправо, 46-delete _
                 35 - 36 -Home/End
        ElseIf KeyCode =  110  Then
            'разделитель на добавочном блоке
            KeyCode = IIf(GetKeyboardLayout( 0 ) = kb_lay_en,  190 ,  191 )
            If InStr(Me.TextBox41, ".") >  0  Then KeyCode =  0 
        ElseIf (KeyCode >  47  And KeyCode <  58 ) Or (KeyCode >  95  And KeyCode <  106 ) Then
            'цифры
        Else
            KeyCode =  0 
        End If
    ElseIf Shift =  5  And KeyCode =  16  Then
        'перевод раскладки клавы
    ElseIf Shift =  1  And KeyCode =  35  Or KeyCode =  36  Or KeyCode =  37  Or KeyCode =  39  Then
        'Shift стрелка влево/вправо
    Else
        KeyCode =  0 
    End If
End Sub


Большое спасибо за ответ. Я ут покопался в литературе и нашел более короткий вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub TextBox7_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
        If Not KeyAscii = Asc(".") Then
            KeyAscii =  0 
        End If
    End If
End Sub
...
Рейтинг: 0 / 0
05.03.2008, 19:14
    #35173848
dd44
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование листав Экселе
vkodorЕсли после нажатия на кнопку не сформируется новая книга, выкиньте Excel

АААААААААААА
Не работает, ничего не происходит ((((
...
Рейтинг: 0 / 0
10.03.2008, 18:25
    #35180898
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование листав Экселе
dd44 vkodorЕсли после нажатия на кнопку не сформируется новая книга, выкиньте Excel

АААААААААААА
Не работает, ничего не происходит ((((

Создайте новую чистую книгу, поставьте на лист кнопку и скопируйте в лист такой код:

Private Sub CommandButton1_Click()
Dim oSht As Worksheet

Set oSht = ActiveSheet
oSht.Copy
End Sub

Если ничего не произойдет, выкиньте свой Экселе и поставьте нормальный Excel.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Копирование листав Экселе / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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