-2

Excel(2010)でセル範囲をスキャンし、スキャンしたセルの数、数値セルまたはテキストセルが他にあったか、空のセルがいくつ見つかったかを示すプログラムをVBAで作成するにはどうすればよいですか? 範囲セルはユーザーが定義します。

これは私の現在のコードです:

Private Sub CommandButton1_Click()

Dim c As Range

Set c = Application.InputBox(Prompt:="A vizsgálandó cellatartomány:", Title:="Adja meg   a cellatartományt!", Default:="A1:B4", Type:=8)

Dim szam As Integer, szoveg As Integer, osszescella As Integer, ures As Integer

osszescella = c.Cells.Count '# of scanned cells

Dim rngSpec As Range

Set rngSpec = c.SpecialCells(xlCellTypeBlanks)

If Not rngSpec Is Nothing Then ures = rngSpec.Cells.Count '# of blank cells

Set rngSpec = c.SpecialCells(xlCellTypeConstants, 2)

If Not rngSpec Is Nothing Then szoveg = rngSpec.Cells.Count '# of text cells

Set rngSpec = c.SpecialCells(xlCellTypeConstants, 1)

If Not rngSpec Is Nothing Then szam = rngSpec.Cells.Count '# of numeric cells

Dim kezdocella As String

kezdocella = InputBox("Kezdő cella", "Adja meg a kezdőcellát:", "G10")

Range(kezdocella).Value = "Vizsgált cellák száma: "

Range(kezdocella).Offset(0, 1).Value = osszescella

Range(kezdocella).Offset(1, 0).Value = "Szöveges/számos van több?"

If szam > szoveg Then Range(kezdocella).Offset(1, 1).Value = "Számos" _
Else: If szoveg > szam Then Range(kezdocella).Offset(1, 1).Value = "Szöveges" _
Else Range(kezdocella).Offset(1, 1).Value = "Ugyanannyi van"

Range(kezdocella).Offset(2, 0).Value = "Üres cellák száma: "

Range(kezdocella).Offset(2, 1).Value = ures

Range(kezdocella).Offset(3, 0).Value = "Nem üres cellák száma: "

Range(kezdocella).Offset(3, 1).Value = osszescella - ures

Cells.Columns.AutoFit

End Sub

Scott Holtzman に感謝します。最後に、ユーザーが指定したセルから始まる結果が表示されます。もっと良い方法があると思いますが、これもうまくいくと思います。

4

1 に答える 1

0

あなたは素晴らしいスタートを切りました!以下のコードであなたを助け、無効な構文の一部をクリーンアップしました。これはあなたが行きたいと思っていたはずです...そして不必要なループなしで。

Option Explicit

Sub elsobeadando()

Dim c As Range

Set c = Application.InputBox(Prompt:="Enter Cell Range", Title:="Specify Range", Type:=8)

Dim szam As Integer, szoveg As Integer, osszescella As Integer, ures As Integer

szam = c.Cells.Count '# of scanned cells

On Error Resume Next
Dim rngSpec As Range
Set rngSpec = c.SpecialCells(xlCellTypeBlanks)

If Not rngSpec Is Nothing Then szoveg = rngSpec.Cells.Count '# of blank cells

Set rngSpec = c.SpecialCells(xlCellTypeConstants, 2)

If Not rngSpec Is Nothing Then osszescella = rngSpec.Cells.Count '# of text cells

Set rngSpec = c.SpecialCells(xlCellTypeConstants, 1)

If Not rngSpec Is Nothing Then ures = rngSpec.Cells.Count '# of numeric cells

'not sure if this maps up with the above because, well ... I don't understand hungarian! :)
'also cleaned this up a bit to be actual VBA syntax
Range("D10").Value = osszescella
If szam > szoveg Then Range("D11").Value = "Több számos cella volt, mint szöveges"
Range("D12").Value = ures
Range("D13").Value = osszescella - ures

End Sub
于 2012-12-04T19:18:16.850 に答える