2016-01-08 3 views
2

Я хочу ввести 3 или 4-значное значение в текстовое поле, проверить, что это число, разделить число на 1 или 2 цифры минут и 2 цифры секунд , Затем я хочу найти именованный диапазон в электронной таблице, переместиться в правый конец этого диапазона, а затем вставить смещение значения времени из числа ячеек из этой ячейки. Я также хочу отформатировать ячейку, в которую я вставляю минутку и секундную ячейку. Большинство из них работает, но у меня проблема со смещенной пастой и форматированием в самом конце небольшой процедуры. Теперь проблема заключается в вставке значения TextBox2 в эту ячейку.Найти ячейку, вставить и форматировать значение времени

Dim tbV As String 
Dim sV As String 
Dim mV As String 
Dim TimeCell As Range 
Dim LastColl As Range 

tbV = TextBox2.Text 

    If Len(tbV) > 4 Or Len(tbV) < 2 Or Not IsNumeric(tbV) Then 
     MsgBox "wrong" 
    Exit Sub 
    End If 


sV = Right(tbV, 2) 
mV = Left(tbV, Len(tbV) - 2) 


Dim iOffset As Integer 
    Select Case Range("AC1").Value 
     Case Is = 30: iOffset = 16 
     Case Is = 33: iOffset = 20 
     Case Is = 22: iOffset = 14 
    End Select 

Set LastColl = Range("Battery" & BatteryNumber).End(xlToRight) 

Set TimeCell = Range(LastCol.Offset(iOffset, 0)) 

TimeCell.NumberFormat = "m:ss" 
TimeCell.Value = TimeSerial(0, Val(mV), Val(sV)) 
+1

Try 'Set LastColl = Range ("Battery" и BatteryNumber) .END (xlToRight) .offset (iOffset, 0)) '? Я предполагаю, что вы правильно задали 'BatteryNumber' где-то и это имя диапазона ... – findwindow

+0

* Теперь проблема в том, что вставка значения TextBox2 в эту ячейку * - Что именно ** является ** проблемой? Что происходит, когда вы выполняете 'TimeCell.Value = TimeSerial (0, Val (mV), Val (sV))'? –

+0

Проблема заключалась в том, что временная переменная помещалась в электронную таблицу как массив в столбце. Хитрость заключалась в том, чтобы получить правильный диапазон ввода, и это было сделано с помощью вышеупомянутого бита кода. Большое спасибо за ремонт. –

ответ

1

Замените эту строку:

Set LastColl = Range("Battery" & BatteryNumber).End(xlToRight) 

с этим:

Dim Rng As Range 
Set Rng = Range("Battery" & BatteryNumber) 
Set LastColl = Rng(Rng.Columns.Count) 
Смежные вопросы