В основном я использую функцию TextToColumns для разделения данных, разделенных точкой с запятой в одной ячейке. проблема в том, что есть 2 столбца данных, которые нуждаются в этой функции, и мне нужно вставить данные без перезаписи.Excel, VBA, мне нужно отправить rng в lastcolumn. В настоящее время MsgBox покажет его
(Полегче, первый раз с помощью VBA и Excel) это то, что я в настоящее время:
Sub Button1_Click()
Dim rng As Range
Dim sh As Worksheet
Set sh = Worksheets("Sheet1")
With sh
Set rng = .[Q1]
Set rng = .Range(rng, .Cells(.Rows.Count, rng.Column).End(xlUp))
num = Application.WorksheetFunction.Max(Columns("P"))
rng.Offset(0, 1).Resize(1, num).EntireColumn.Insert
rng.TextToColumns Destination:=rng, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, _
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
End With
Set sh2 = Worksheets("Sheet1")
With sh2
num2 = Application.WorksheetFunction.Max(Columns("P"))
Dim lastColumn As Integer
lastColumn = ActiveSheet.UsedRange.Column - 1 + ActiveSheet.UsedRange.Columns.Count
MsgBox Replace(Cells(1, lastColumn).Address(False, False), "1", "")
MsgBox lastColumn
Set rng = .[W1]
Set rng = .Range(rng, .Cells(.Rows.Count, rng.Column).End(xlUp))
rng.TextToColumns Destination:=rng, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, _
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
End With
End Sub
ИТАК, что я пытаюсь исправить это установка ГСЧ вручную во второй части к W1. rng должен быть следующим пустым столбцом. поэтому lastColumn с помощью MsgBox DOES возвращает столбец «W», но я не могу установить это на rng (тип несоответствия). oh, а переменная num устанавливается на количество столбцов, которые мне нужно вставить. мои данные выглядят так:
count | столбец с; нужны данные для разделения | столбец с; данные необходимо разделить
5 | 5 наборов данных, разделенных полуколонами | не заботятся, потому что это конец листа
есть ли более простой способ сделать это? я даже близко?
ОН, правый хороший момент! это исключило бы способность писать заголовок, но я мог бы жить с этим. – dalearyous
Рад, что это сработало! - Если это так, не забудьте отметить решение в качестве ответа. –
ну, это не потому, что значения для этого единственного столбца - это просто формула, а не фактические текстовые значения. также, мог бы я просто сделать макрос и продолжать использовать VBA? – dalearyous