Excel VBA - 通过列

时间:2017-08-03 21:04:50

标签: excel vba excel-vba

我在网上找到了这个VBA代码。代码用于查找特定文本“Item”,然后删除具有文本“Item”的单元格及其下方的单元格。代码可以工作,但一次只能使用一个。我正在完成的专栏有11,000个数据单元。一次去一个将花费太长时间。有没有人知道一种方法来获取此代码并使其在一次运行中通过整个列工作?这是代码。

   Sub deleteCells()
'
' deleteCells Macro
'
' Keyboard Shortcut: Ctrl+s
'
Dim StartRange As String
Dim EndRange As String
Cells.Find(What:="Item").Select
StartRange = ActiveCell.Address
Selection.Offset(1, 1).Select
EndRange = ActiveCell.Address
ActiveSheet.Range(StartRange & ":" & EndRange).Select
Selection.Delete Shift:=xlUp

End Sub

提前致谢!

1 个答案:

答案 0 :(得分:0)

您正在删除您找到的单元格,因此使用.address查找第一个查找不起作用。只需继续寻找 Item ,直到找不到它为止。

using System;
using System.Reflection;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;
using System.Collections.ObjectModel;

namespace WpfParabola
{
    public partial class MainWindow : Window
    {
        Random rnd = new Random();
        public ObservableCollection<Parabola> parabolas { get; set; } = new ObservableCollection<Parabola>();
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
            parabolasDataGrid.AutoGenerateColumns = false;
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Path path = new Path();
            PathGeometry geometry = new PathGeometry();
            PathFigure figure = new PathFigure();
            Parabola p = new Parabola(rnd);
            parabolas.Add(p);
            figure.StartPoint = new Point(1, p.y(1));
            for(double x=2; x<300; x += 0.5)
            {
                figure.Segments.Add(new LineSegment()
                {
                    Point = new Point(x, p.y(x))
                });
            }
            path.Stroke = p.br;
            path.StrokeThickness = 2;
            geometry.Figures.Add(figure);
            path.Data = geometry;
            parabolaCanvas.Children.Add(path);
        }

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            Close();
        }
    }
}

您应该将更多参数应用于.Find操作。 VBA的.Find与工作表上的相同,并将继承用户使用的选项(也称为参数)。

您还应该将.Cells限制为您要使用的列。你认为这个问题并不重要,不能包含在你的问题中,所以你可以把它弄清楚。