bugfix> excel > 投稿

そのため、文字eを見つけてセルから削除する簡単なプログラムをテストしていました。ただし、Cells(1,1)は機能しますが、変数Aは機能しません。

Sub remove()
  A = Cells(1, 1)
  pos = InStr(A, "e")
       'A works for pos though I don't know why
  'A.characters(pos,1).delete'
       'The above doesn't work for some reason'   
  Cells(1, 1).Characters(pos, 1).delete    
End Sub

私が試したこと

  • 範囲としてDim A
  • 範囲を使用する

また、私の問題についてより具体的にされていないことを残念に思います。私はそれに取り組んでいますが、VBAとコーディング一般の背後にある用語についてはわかりません

回答 2 件
  • ジープはそれに私を打ちました。 VBAは強く型付けされていないので、「Set」を使用して割り当てている変数がオブジェクト型であることを明示的に伝えない限り、Aが取る値はこの場合、セル自体ではなくセルの内容です。

    良い方法ですが、それを暗くする必要はありません。

    Sub remove()
      Set A = Cells(1, 1) 'Need to use Set
      pos = InStr(A, "e")
      'This works just fine now
      A.characters(pos,1).delete'
    End Sub
    
    

  • cells(1、1).valueをAに割り当てています。cells(1、1)の範囲オブジェクトプロパティ(「文字」など)が必要な場合は、range-type varをcells(1,1に設定する必要があります。 )。

    Sub remove()
      dim A as range
      set A = Cells(1, 1)
      pos = InStr(A.value, "e")
      A.characters(pos,1).delete'   
    End Sub
    
    

あなたの答え