Я - пользователь VB, которому нужно go назад и попытаться заставить код VBA работать в Word. У меня есть файл .dotm, который содержит таблицы и данные, которые пользовательская форма "пылесосит" при инициализации. Клиент запускает свой собственный документ и может вставить «начальные таблицы», скопированные из моего .dotm. В этих таблицах пользователь идет к пустой ячейке и выбирает кнопку из пользовательской формы, чтобы вставить текст в эту ячейку. Если текст, связанный с кнопкой, имеет знак плюс, я хочу разделить ячейку, в которой находится пользователь, и разделить строку так, чтобы один фрагмент находился в «исходной» ячейке, а другой - во вновь созданном с помощью разделения клетка. У меня есть код для разделения выбранной пользователем ячейки, но у меня возникают проблемы со ссылкой на исходную ячейку и вновь созданную ячейку. Вот код, адаптированный для чего-то похожего для разделения:
Public Sub SelectionInfo(ByVal RememberMyText As String)
'
Dim iSelectionRowEnd As Integer
Dim iSelectionRowStart As Integer
Dim iSelectionColumnEnd As Integer
Dim iSelectionColumnStart As Integer
Dim lngStart As Long
Dim lngEnd As Long
Dim numberOfColumnsInCurrentTable As Integer
Dim currentTableIndex As Integer
' Check if Selection IS in a table
' if not, exit Sub after message
If Selection.Information(wdWithInTable) = False Then
MsgBox "Selection is not in a table. Exiting macro."
Else
currentTableIndex = ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count
NumberOfColumns = ActiveDocument.Tables(currentTableIndex).Columns.Count
MsgBox ("Current table is # " & currentTableIndex)
lngStart = Selection.Range.Start
lngEnd = Selection.Range.End
' get the numbers for the END of the selection range
iSelectionRowEnd = Selection.Information(wdEndOfRangeRowNumber)
iSelectionColumnEnd = Selection.Information(wdEndOfRangeColumnNumber)
' collapse the selection range
Selection.Collapse Direction:=wdCollapseStart
' get the numbers for the END of the selection range
' now of course the START of the previous selection
iSelectionRowStart = Selection.Information(wdEndOfRangeRowNumber)
iSelectionColumnStart = Selection.Information(wdEndOfRangeColumnNumber)
' RESELECT the same range
Selection.MoveEnd Unit:=wdCharacter, Count:=lngEnd - lngStart
' display the range of cells covered by the selection
MsgBox "The selection covers " & Selection.Cells.Count & " cells, from Cell(" & _
iSelectionRowStart & "," & iSelectionColumnStart & ") to Cell(" & _
iSelectionRowEnd & "," & iSelectionColumnEnd & ")."
Dim counter As Integer
counter = 0
For j = 1 To Len(RememberMyText)
If Mid(RememberMyText, j, 1) = "+" Or Mid(RememberMyText, j, 1) = "-" Then
counter = counter + 1
End If
Next j
If counter > 0 Then
MsgBox ("There were " & counter & " symbols..")
'ActiveDocument.SelectionTables(1).Cell(iSelectionRowStart, iSelectionColumnStart).Split Numrows:=1, NumColumns:=2, MergeBeforeSplit:=False
'ActiveDocument.SelectionTables(1).Cell(iSelectionRowStart, iSelectionColumnStart).Range.Select
If counter = 1 Then
Selection.Cells.Split Numrows:=1, NumColumns:=2, Mergebeforesplit:=True 'False
'now split the text and redistribute it into the two cells, same row, different column for other half of original string
Dim Result() As String
Result() = Split(RememberMyText)
Dim rng As Range
rng = ActiveDocument.Tables(currentTableIndex).Rows(iSelectionRowStart).Cells(iSelectionColumnStart).Range
'also tried: rng = ActiveDocument.Tables(currentTableIndex).Cells(iSelectionRowStart,iSelectionColumnStart).Range
Selection.TypeText ("")
Selection.TypeText (Result(0))
rng = ActiveDocument.Tables(currentTableIndex).Rows(iSelectionRowStart).Cells(iSelectionColumnStart + 1).Range
'also tried: rng = ActiveDocument.Tables(currentTableIndex).Cells(iselectionRowStart,iSelectionColumnStart + 1).Range
Selection.TypeText (Result(1))
ElseIf counter = 2 Then
Selection.Cells.Split Numrows:=1, NumColumns:=3, Mergebeforesplit:=True 'False ' also switched true and false
'still working on this one, it would be the same issue.
End If
End If
End If
End Sub
Ячейка разделяется ОК, оставляя исходный текст в одной ячейке, и вновь созданная ячейка пуста. Я просто хочу «сделать заново» эти две ячейки (или заново сделать три ячейки, если в исходной строке два знака плюс). Я просто человек среднего уровня; любая помощь с благодарностью. Спасибо