2015-11-24 3 views
4
Dim testtext As String 
testtext = Worksheets("Sheet2").Range("B6").Value 
Worksheets("Sheet2").Range("B7").Value = testtext 

Простое копирование содержимого одной ячейки в другую. Но у меня возникают проблемы, когда содержимое B6 равно '02345 - после запуска макроса B7 содержит 2345, и я не хочу потерять начальный ноль. Я попытался заменить .Value на .Text во второй строке кода, и это не помогло.Excel VBA - Строки, начинающиеся с 0

ответ

9

Если вы измените свойство .NumberFormat на "@", он напишет 02345 в ячейке.

Dim testtext As String 
testtext = Worksheets("Sheet2").Range("B6").Value 
Worksheets("Sheet2").Range("B7").NumberFormat = "@" 

Worksheets("Sheet2").Range("B7").Value = testtext 

Это работает потому, что стандартный формат ячейки считывает номер с ведущими 0s как числовое значение, и, следовательно, ведущие 0s удаляются. Заставляя Excel использовать текстовый формат для этой ячейки, он не будет рассматривать его как числовое значение, а просто как обычный текст.

+0

хе-хе ... вы были быстрее .. я удалю свой идентичный пост;) – cboden

+0

Вы уверены, что я был первым? Ваш ответ был там, когда я отправил свой, так что, наверное, вы могли быть быстрее или мы ответили одновременно :) – Alex4336

+0

не имеет значения ... хотя бы ТО имеет правильный ответ;) – cboden

4

Я не знаю, что это свойство по умолчанию Range, но в любом случае

With Worksheets("Sheet2") 
    .Range("B7") = .Range("B6") 
End With 

, кажется, работает отлично.
Если вам действительно нужна переменная testext, я бы определил ее как Variant.

1

Вы можете использовать свойство ячейки FormulaR1C1, чтобы вставить единственную цитату, которая заставляет Excel интерпретировать его как текст. Это имитирует то, что на самом деле происходит, когда вы входите '02345 в B6 первоначально, как вы можете проверить, выполнив таким образом с записью макросов включено:

Worksheets("Sheet2").Range("B7").FormulaR1C1 = "'" & testtext 
2

Попробуйте простое копирование содержимого одной ячейки в другую с copy методом.

Worksheets("Sheet2").Range("B6").copy Worksheets("Sheet2").Range("B7") 
Смежные вопросы