Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA使用偏移量为另一工作表上的另一个单元格赋值_Excel_Vba - Fatal编程技术网

Excel VBA使用偏移量为另一工作表上的另一个单元格赋值

Excel VBA使用偏移量为另一工作表上的另一个单元格赋值,excel,vba,Excel,Vba,我是VBA新手。我的目标是创建一个宏,在“计算机语言”部分(操作系统部分之前)添加一个新列。它将其添加到活动工作表上,然后还有另一个称为“筛选”的工作表,用于筛选结果,需要将其添加到同一部分(与主工作表不完全在同一位置) 到目前为止,它在两个工作表中都正确添加了列。我只需要插入值。它将其正确插入主工作表,但无法在“筛选”工作表中输入值 有人能告诉我为什么我的代码失败了吗 错误438 这可能真的很简单。不过,我这周只做了一次编程 Sub newComputerLanguage() newCL =

我是VBA新手。我的目标是创建一个宏,在“计算机语言”部分(操作系统部分之前)添加一个新列。它将其添加到活动工作表上,然后还有另一个称为“筛选”的工作表,用于筛选结果,需要将其添加到同一部分(与主工作表不完全在同一位置)

到目前为止,它在两个工作表中都正确添加了列。我只需要插入值。它将其正确插入主工作表,但无法在“筛选”工作表中输入值

有人能告诉我为什么我的代码失败了吗

错误438

这可能真的很简单。不过,我这周只做了一次编程

Sub newComputerLanguage()
newCL = InputBox("New Computer Language Name")

    Dim CLheaderFiltering As Range
    Dim OSheaderFiltering As Range
    Dim CLheader As Range
    Dim OSheader As Range

    Set CLheaderFiltering = Worksheets("Filtering").Range("O4:HC4").Find("Computer Languages")
    Set OSheaderFiltering = Worksheets("Filtering").Range("O4:HC4").Find("Operating Systems")
    Set CLheader = Range("Q5:HC5").Find("Computer Languages")
    Set OSheader = Range("Q5:HC5").Find("Operating Systems")

    If OSheader Is Nothing Then
      MsgBox "Operating Systems column was not found."
      Exit Sub
    Else
      Worksheets("Filtering").Columns(OSheaderFiltering.Column).Offset(, 0).Resize(, 1).Insert
      Columns(OSheader.Column).Offset(, 0).Resize(, 1).Insert

      OSheader.Offset(, -1).Value = newCL
      Worksheets("Filtering").OSheaderFiltering.Offset(, -1).Value = newCL  'FAILS HERE!
      OSheader.Offset(1, -1).Select

    End If
End Sub

我认为只需添加工作表就可以了。

您已将
设置为工作表(“筛选”)工作表上的一个范围。您不需要重述工作表(“筛选”)
OSheaderFiltering.Offset(,-1).Value=newCL
应该足够了。为什么在语句D中有.Resize(,1)和Insert?此外,您已经有一个对所选列的引用-此代码相当于:
OSheaderFiltering.entireclumn.Insert
,它将在其前面插入一个新列。我认为语句
工作表(“筛选”).OSheaderFiltering….
不起作用
OSHeaderFiltering
本身就是一个变量,它不是工作表的属性。这很可能就是为什么会出现错误438。正如我所看到的,@Jeeped已经指出的。解决:谢谢Jeeped。我不知道已经定好了。至于为什么它的大小是为约翰诺委员会的问题,我不知道。我找到了做我需要的事情的代码,那就是在特定单元格之间添加一列,所以我使用了它。