VBA TextToColumns 函数在共享工作簿中不起作用

问题描述 投票:0回答:1

我已经在这里解决了通过 TextToColumns 函数将文本拆分为列的问题。但现在我遇到了一个问题,我必须将此 Excel 设置为共享,并且此功能对我不起作用,能否将此功能替换为可在共享工作簿中使用的其他功能? 如果有任何建议我将非常感激

Private Sub Generate_Click()
  Dim destRng As Range
    If Selection.Columns.Count = 1 And ActiveCell.Column = 7 Then
    'Set destRng = Range("G4")  instead this
    
        Selection.TextToColumns , Destination:=Range("H" & Selection.Row), _
        DataType:=xlDelimited, Other:=True, OtherChar:="-", Other:=False, OtherChar:="_"
    
        Else
        MsgBox "Mark only column G"
        End If
    
End Sub

分隔符是破折号“-”

编辑:

是否可以修改此代码以在所有选定的单元格上运行?因为现在它只适用于一个选定的单元格:

Private Sub Generate_Click()
  Dim splitVals As Variant
  Dim totalVals As Long
    If Selection.Columns.Count = 1 And ActiveCell.Column = 7 Then
   
        splitVals = Split(ActiveCell.Value, "-")
        totalVals = UBound(splitVals)

        Range(Cells(ActiveCell.Row, ActiveCell.Column + 1), Cells(ActiveCell.Row, ActiveCell.Column + 1 + totalVals)).Value = splitVals

        Else
        MsgBox "Mark only column G"
        End If
    
End Sub

非常感谢您的帮助:)

excel vba
1个回答
0
投票

如果您使用的是 Excel 365,您可以使用

TEXTSPLIT
公式来实现拆分,然后用其值替换公式:

Private Sub Generate_Click()
  
    If Selection.Columns.Count = 1 And ActiveCell.Column = 7 Then
        Dim rgTarget As Range, c As Range, rgValues As Range
        
        Set rgTarget = ActiveSheet.Range("H" & Selection.Row).Resize(Selection.Rows.Count)
        With rgTarget
            .Formula2 = "=TEXTSPLIT(G" & Selection.Row & ",""-"")"
            
            Set rgValues = .Resize(, .CurrentRegion.Columns(1).Column + .CurrentRegion.Columns.Count - .Column) 'get range to which the formula spills
            rgValues.Value = rgValues.Value ' replace formula by value
            
        End With
    Else
        MsgBox "Mark only column G"
    End If

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.