如果每个工作表中的字符串匹配,请修复删除行

时间:2019-04-15 09:32:18

标签: excel vba

我正在Excel中为奶牛场建立柴油记录管理系统。它的功能类似于原始的关系数据库系统。驾驶员,车辆和承包商将各自拥有一张床单。

如果出现错误,我试图添加一个Sub来删除条目。每个条目在相关电子表格的第1列中都有一个唯一的ID。

我的Sub应该遍历所有工作表,确定工作表的第1列中是否存在ID,如果工作表中存在ID,则删除该ID所在的行。

它不执行我正在尝试的操作,我也不知道为什么。任何帮助将不胜感激。

我也尝试选择EntireRow而不是删除它-只是看它是否选择了错误的行并删除,但是我的代码返回运行时错误1004:“ Range类的选择方法失败”。

def _extract_box_classifier_features(self, proposal_feature_maps, scope):
    """Extracts second stage box classifier features.
    Args:
      proposal_feature_maps: A 4-D float tensor with shape
        [batch_size * self.max_num_proposals, crop_height, crop_width, depth]
        representing the feature map cropped to each proposal.
      scope: A scope name (unused).
    Returns:
      proposal_classifier_features: A 4-D float tensor with shape
        [batch_size * self.max_num_proposals, height, width, depth]
        representing box classifier features for each proposal.
    """
    with tf.variable_scope(self._architecture, reuse=self._reuse_weights):
      with slim.arg_scope(
          resnet_utils.resnet_arg_scope(
              batch_norm_epsilon=1e-5,
              batch_norm_scale=True,
              weight_decay=self._weight_decay)):
        with slim.arg_scope([slim.batch_norm],
                            is_training=self._train_batch_norm):
          blocks = [
              resnet_utils.Block('block4', resnet_v1.bottleneck, [{
                  'depth': 2048,
                  'depth_bottleneck': 512,
                  'stride': 1
              }] * 3)
          ]
          proposal_classifier_features = resnet_utils.stack_blocks_dense(
              proposal_feature_maps, blocks)
    return proposal_classifier_features

代码运行无错误,但不会删除任何行。 我怀疑该错误与ActiveSheet或Outer For循环有关(“对于WorkSheets中的每个对象”)。单击按钮即可激活该宏。如果我将ID放在按钮所在的工作表的第1列中,它将删除正确的行。如果相同的ID位于其他多个工作表的第1列中,则这些行不会被删除。如果通过按钮单击来运行宏,而ActiveSheet中没有ID,则不会删除任何行。

1 个答案:

答案 0 :(得分:0)

我通过使引用完全合格来稍微修改了代码。

它在我的末端起作用。看看是否适合您。

Dim r As Integer
Dim To_Delete As String
To_Delete = InputBox("Input Entry ID to delete", "Delete Record", "Entry_ID")
Application.ScreenUpdating = False
For Each sht In ThisWorkbook.Worksheets
    For r = sht.UsedRange.Rows.Count To 1 Step -1
        If sht.Cells(r, "A").Value = To_Delete Then
            sht.Cells(r, "A").EntireRow.Delete
        End If
    Next r
Next sht
Application.ScreenUpdating = True