Excel VBA:Shift:= xlToLeft可能两次吗?

时间:2018-08-29 10:17:59

标签: excel vba shift

Looks like this我是vba的新手,正在解决以下问题。

我在“ E:E” *列中写了一个公式(不是在VBA代码中),现在我在它旁边插入一个新列(带有VBA代码)。问题是,我的公式不会自动扩展。

因此,当我更改新添加的列的位置/位置时,它将位于至少两个已经存在的列之间,并且公式将自动扩展...

Sub spalteeinfuegen1()
    Set Zelle_kostenstelle = Worksheets("Tabelle1").Range("1:1").Find(kostenstelle) 'Suche der Kostenstelle in der Tabelle1
    If Not Zelle_kostenstelle Is Nothing Then
       Zelle_kostenstelle.EntireColumn.Insert Shift:=xlToLeft 'Einfügen der Tabelle auf der linken Seite und Abbruch falls er den Eintrag nicht findet
       Worksheets("Tabelle1").Cells(1, Zelle_kostenstelle.Column - 1) = UserForm4.TextBox1.Text 'Text aus der UserForm übertragen
    End If
End Sub

但是我该如何两次使用Shift:= xlToLeft?

*“ E:E”列只是一个示例。在VBA代码中,我将其称为“ kostenstelle”,因为它随每个新插入的位置而变化。

Sub spalteeinfuegen1()
Set Zelle_kostenstelle = Worksheets("Tabelle1").Range("1:1").Find(kostenstelle)
Zelle_kostenstelle.EntireColumn.Select
With Selection
        If Selection.Column > 2 Then
        Debug.Print ",e"
        .Columns(.Columns(Selection).Column - 2).Insert Shift:=xlToLeft
        Worksheets("Tabelle1").Cells(1, Zelle_kostenstelle.Column - 2) = UserForm4.TextBox1.Text
        End If
End With
End Sub

我有点困惑,如何正确处理变量列“ zelle_kostenstelle” ...

1 个答案:

答案 0 :(得分:0)

也许是这样的:

Option Explicit
Public Sub test()
    Dim Zelle_kostenstelle As Range
    Dim kostenstelle As String
    kostenstelle = "FindMe"
    With Worksheets("Tabelle1")
        Set Zelle_kostenstelle = .Range("1:1").Find(kostenstelle)
        If Not Zelle_kostenstelle Is Nothing Then '< Test if anything was found
            If Zelle_kostenstelle.Column > 2 Then '<Make sure you can go back to columns to do an insert
                .Columns(Zelle_kostenstelle.Column - 2).Insert Shift:=xlToRight '<perform the insert 2 columns to the left
            End If
        End If
    End With
End Sub