Страницы: 1
RSS
Два вопроса по VBA . ( TextBox, lLastRow), VBA
 
Добрый день господа. Помогите пожалуйста. Имеется код который открывает книгу и копирует в нее значение из TextBox (UserForm).

1 вопрос : как сделать что бы вставка значений происходила как текст ?! ( проблема в том что длинные числа с нулями и вообще нули обрезает или преобразует в формат общий)

кусок кода:

Код
Dim oWbk As Workbook
Set oWbk = Workbooks.Open("\\Srv-2\1.xlsx")
'Windows("1.xlsx").Activate
'Workbooks("1.xlsx").Close True
 
   Dim lLastRow As Long
    ' A.
    lLastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row + 1
    ActiveSheet.Cells(lLastRow, "A").Value = Me.TextBox25.Value
    ActiveSheet.Cells(lLastRow, "B").Value = Me.TextBox24.Value


2 вопрос: Как сделать что бы инициализации формы Label1.Caption = последней заполненной ячейке в другой книге. Есть код который копирует значение определенной


Код
Dim sShName As String, sAddress As String, vData
 'Отключаем обновление экрана
 Application.ScreenUpdating = False
 Workbooks.Open "\\Srv-2\1.xlsx"
 sAddress = "A1" 'или одна ячейка - "A1"
 'получаем значение
 vData = Sheets("1"  ;)  .Range(sAddress).Value
 ActiveWorkbook.Close False
 'Записываем данные на активный лист книги,
 'с которой запустили макрос
 If IsArray(vData) Then
 [A1].Resize(UBound(vData, 1), UBound(vData, 2)).Value = vData
 Else
 Me.Label1.Caption = vData
 End If
 'Включаем обновление экрана
 Application.ScreenUpdating = True



но не могу никак прикрутить lLastRow = Cells(Rows.Count,1).End(xlUp).Row
Изменено: kare - 06.06.2013 14:44:02
 
1. Добавить символ ' в начале строки:
Код
ActiveSheet.Cells(lLastRow, "A").Value = "'" & Me.TextBox25.Value
    ActiveSheet.Cells(lLastRow, "B").Value = "'" & Me.TextBox24.Value

Либо установить формат числа:
Код
ActiveSheet.Cells(lLastRow, "A").NumberFormat = "00000000"
ActiveSheet.Cells(lLastRow, "B").NumberFormat = "00000000"

2. Если использовать просто "Cells", то идет обращение к активному листу активной книги, а к другой книге и листу следует обращаться по конкретными именам:
Код
vData = Workbooks("ИмяКниги").Sheets("ИмяЛиста").Cells(Rows.Count, 1).End(xlUp).Value

либо так:
Код
Dim sShName, sAddress, vData As String
Dim WB As Object
 'Отключаем обновление экрана
 Application.ScreenUpdating = False
 set WB = Workbooks.Open "C:\Documents and Settings\Книга1.xls"
 sAddress = "A1" 'или одна ячейка - "A1"
 'получаем значение
 vData = WB.Sheets("ИмяЛиста").Cells(Rows.Count, 1).End(xlUp).Value
Изменено: DEAD MAN - 06.06.2013 15:00:26
Пользователи, как школьники, учиться хотят далеко не все, а отличниками становятся единицы.
Проблема - это ситуация, в решении которой человек не заинтересован.
 
DEAD MAN,

Спасибо большое.Сейчас попробуем.
 
А я бы попробовал вместо
Код
Cells(lLastRow, "A").Value =

написать
Код
Cells(lLastRow, "A").Text =
 
Спасибо сработало так же как и с вариантом DEAD MAN,
принципиальная разница методов есть?  :oops:
 
Большой разницы не вижу, но без апострофа спокойнее)) И код чуть короче)
 
Цитата
Юрий М пишет:
Большой разницы не вижу, но без апострофа спокойнее)) И код чуть короче)

как вариант буду знать спасибо !

DEAD MAN,  За первый вопрос низкий поклон. По второму подчеркивает красным строчку открытия книги
 
Что-то меня смутила эта строка:
Цитата
vData = WB.Sheets("ИмяЛиста").Cells(Rows.Count, 1).End(xlUp).Value
А что хотите получить в vData?
 
DEAD MAN СПАСИБО !!!!!

DEAD MAN пишет:

Код
Dim sShName, sAddress, vData As String
Dim WB As Object
 'Отключаем обновление экрана
 Application.ScreenUpdating = False
 set WB = Workbooks.Open ("C:\Documents and Settings\Книга1.xls")  
 sAddress = "A1" 'или одна ячейка - "A1"
 'получаем значение
 vData = WB.Sheets("ИмяЛиста")  .Cells(Rows.Count, 1).End(xlUp).Value


работает.
Изменено: kare - 06.06.2013 15:40:26
 
Отключайте смайлы, когда пишете код или формулы.
 
По моему вопросу отбой - подумал сначала, что ищете НОМЕР строки))
 
Цитата
Юрий М пишет:
Отключайте смайлы, когда пишете код или формулы.

пардон. поправил  :)
 
Цитата
kare пишет:
поправил
Не совсем: там появились точка с запятой )))
 
Доброго времени суток!
У меня похожая проблема, не могу найти решение, при копировании ячеек со значениями все копипастится как в исходнике, а вот при обработке макросом, все из скопированных значений конвертируются в числовые значения и формат ячеек автоматически меняется из общего в числовой. Добавлять апостроф не хочу, т.к. при переносе инфы в другие источники он сохраняется, переводить формат ячеек в текстовый можно, но тоже не хотелось бы (ведь Excel же хранит текстовые данные в общем формате, хотелось бы получить в итоге информацию абсолютно идентичную исходной). А метод Text к Cells у меня вообще выдает ошибку 1004 "нельзя установить метод класса Range". И присвоение формата "Общий(General)" тоже не дает эффекта (применять "до" бессмысленно, применять "после" уже поздно, текст уже конвертируется в число.
Может кто знает решение?
Страницы: 1
Наверх