ExcelVBAで次の大変簡単なコードを書いてみました。
シート上の行列(100*100)の範囲にランダムに☆印を100個表示するというものです。sheet1にコマンドボタンを貼り付け押すと実行します。ところが実行時エラーが起きて止まります。(メッセージ:”アプリケーション定義またはオブジェクト定義のエラーです”)原因はなんでしょうか?6行目が問題なようです。うまく動く時もあるので不思議です。
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
For n = 1 To 100
R = Int(Rnd * 100)
C = Int(Rnd * 100)
Sheet1.Cells(R, C).Value = "☆"
Next
Application.ScreenUpdating = True
End Sub

A 回答 (1件)

R,Cに0が設定されるからではないでしょか?


EXCELのセルは1,1から始まったと思いますが。

R = Int((Rnd * 100) +1)
C = Int((Rnd * 100) +1)
    • good
    • 0
この回答へのお礼

なるほど!そういうことですね。
ありがとうございます。

お礼日時:2001/07/18 22:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QApplication.ScreenUpdating = Falseが効きません

VBA初心者ですが、ブックを開いた際に、別のフォルダにあるエクセルファイル全てをバックグラウンドで開きたいと思い、下記のようなコードを書いたのですが、どこにApplication.ScreenUpdating = Falseを入力しても、別のフォルダにあるエクセルファイルが普通に開いてしまいます。

Sub Auto_open()

Const DIR_PATH = "\\あいうえお\"
Dim fl_name As String

fl_name = Dir(DIR_PATH & "\*.xls*")
If fl_name = "" Then
MsgBox "Excelファイルがありません。"
Exit Sub
End If

Do
Workbooks.Open _
Filename:=DIR_PATH & "\" & fl_name
fl_name = Dir
Loop Until fl_name = ""

End Sub

コードを理解していないと言われればそれまでですが、どうしたら上記のようなことができるようになるか、どなたかご教授いただけますか。

VBA初心者ですが、ブックを開いた際に、別のフォルダにあるエクセルファイル全てをバックグラウンドで開きたいと思い、下記のようなコードを書いたのですが、どこにApplication.ScreenUpdating = Falseを入力しても、別のフォルダにあるエクセルファイルが普通に開いてしまいます。

Sub Auto_open()

Const DIR_PATH = "\\あいうえお\"
Dim fl_name As String

fl_name = Dir(DIR_PATH & "\*.xls*")
If fl_name = "" Then
MsgBox "Excelファイルがありません。"
Exit Sub
End If

Do
Workbooks.Ope...続きを読む

Aベストアンサー

こんにちは

Visible属性をFalseに設定することで、非表示にできます。
でも、一瞬は見えるみたいなので、ちらつきのもとになるようです。

http://www.itlab51.com/?p=5346

QApplication.ScreenUpdating = Falseで結果変わることありますか?

Application.ScreenUpdating = Falseすると超高速化されるので
これにしたいのですが、ただ画面が更新されないだけど結果には
影響することはありませんよね?

Aベストアンサー

ありません
画面の制御を行っているだけで
計算等の要素をもっていないので
処理の結果が変わることはありません

QApplication.ScreenUpdatingがならなくなった

windowsXP SP2
Excel2000を使用しています。
Application.ScreenUpdating=false
で画面非更新ができません。

sub Test()
Application.ScreenUpdating=false
msgbox Application.ScreenUpdating=false
cells(1,1) = "test"
Application.ScreenUpdating=True
end sub

とするとちゃんと、
メッセージではFalseが出るのですが、
cells(1,1) = "test"
の時点で画面が更新されてしまいます。
使用法が誤っていますか?

Aベストアンサー

どのような方法で非更新が出来ないことを確認していますか?

その方法を提示していただければ納得いくと思います。

Q4桁の数字を A*1000+B*100+C*10+D 以外で表現したい。

A=1
B=2
C=3
D=4

のとき 
1234をA*1000+B*100+C*10+D以外で表現したいのですが
何かいい方法がないでしょうか?
4桁ならいいんですが
15、6桁を10行ぐらいコーディングしないといけないのでなえてます↓助けてください。

Aベストアンサー

No.4です。

VB2005でも問題なくできますよ。実際に確認済みです。

Dim A As Integer = 1
Dim B As Integer = 2
Dim C As Integer = 3
Dim D As Integer = 4
Dim E As integer

E = (A & B & C & D) * 1
MsgBox(E)

これで試してください。

Qsubまたはfunctionが定義されていません。

エクセル2010で下記コードの矢印の部分でエラーが出てしまいます。
ほぼネットで見つけたコードそのままですが矢印のところで題記のエラーが出てしまいます。
内容はトヨタのホームページの燃料電池車の画像を保存するはずなのですが・・・
どなたかご存知の方ご教示いただけますでしょうか???

Sub aaa()
GetImageFile "http://toyota.jp/sp/image/e_bn/", "FCV_20140625.jpg"
End Sub

Sub GetImageFile(ImgName As String, SaveName As String)
Dim SaveFileName As String, DownloadFile As String, Ret As Long
If ImgName = "" Then Exit Sub
SaveFileName = SaveName
DownloadFile = ImgName
Ret = URLDownloadToFile(0, DownloadFile, SaveFileName, 0, 0) ’←ここです
If Ret = 0 Then
MsgBox "ダウンロードできました"
Else
MsgBox "エラーが発生しました"
End If
End Sub

エクセル2010で下記コードの矢印の部分でエラーが出てしまいます。
ほぼネットで見つけたコードそのままですが矢印のところで題記のエラーが出てしまいます。
内容はトヨタのホームページの燃料電池車の画像を保存するはずなのですが・・・
どなたかご存知の方ご教示いただけますでしょうか???

Sub aaa()
GetImageFile "http://toyota.jp/sp/image/e_bn/", "FCV_20140625.jpg"
End Sub

Sub GetImageFile(ImgName As String, SaveName As String)
Dim SaveFileName As String, DownloadFile As String...続きを読む

Aベストアンサー

VBAは「URLDownloadToFile」のことを知らないから定義する必要があります。
以下のコードを先頭に付け加えてください。

Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
"URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal _
szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

あとURLの指定方法、間違えていますよ

GetImageFile "http://toyota.jp/sp/image/e_bn/FCV_20140625.jpg", "FCV_20140625.jpg"

としてください。

おそらくマイドキュメントに保存されるかと。


このカテゴリの人気Q&Aランキング

おすすめ情報