>>980 プログラムで処理する場合は、エクセルの保護を受けられません。
プログラマが自分で履歴機能を作る必要があります。
例えば、不可視のシートを用意しておいて、
消去ボタンクリック時にセルの内容をそのシートにコピーしてからClearContentsし、
戻すボタンでコピーした内容を書き戻す、など。
983 :
デフォルトの名無しさん :2010/04/14(水) 00:35:06
>>981 >>982 さっそく、ありがとうございました。
大変よくわかりました。
別シートへの待避と復元をやってみます。
どうもありがとうございました。
>>979 とりあえず、マクロの先頭に
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
ActiveWindow.DisplayGridlines = False
Application.DisplayPasteOptions = False
Application.DisplayInsertOptions = False
Application.AutoRecover.Enabled = False
Application.ErrorCheckingOptions.BackgroundChecking = False
マクロの最後に
Application.Calculation = xlCalculationAutomatic
ActiveWindow.DisplayGridlines = True
Application.DisplayPasteOptions = True
Application.DisplayInsertOptions = True
Application.AutoRecover.Enabled = True
Application.ErrorCheckingOptions.BackgroundChecking = True
というのを付け足してみ。もしかしたらちょっと速くなるかもよ。
>>980 そのマクロをこんなふうに書き換えて、
Sub 範囲消去()
Range("A1:D10").Select
SendKeys ("{DEL}")
End Sub
マクロのオプションでショートカットキーを定義してから使うようにすれば、Ctrl+Zで元に戻せるようになるよ。
>>985 >Ctrl+Zで元に戻せるようになるよ。
えっ、ホントですか? ありがとうございます。早速明日やってみます。ありがとうございます。
僕も不便に思っていましたが、まわりでやっている人のことを思うと、
ぜひ何とかしてあげたいと思っていました。
うまくいくと、みなさんに喜んでもらえそうです。
どうもありがとうございました。
987 :
971 :2010/04/14(水) 03:15:49
>>984 チョットどころか途中で鈍行する事無1m5sで完了しました。奇跡です。
一番上は当然として、ワークシート関数をセルに記載するのが大量にあるコードだったのでApplication.Calculation = xlCalculationManualが効いたみたいです。
ちなみに下5つの奴は全部つけても1sしか短縮出来ませんでしたw
皆様ありがとうございました。
988 :
デフォルトの名無しさん :2010/04/14(水) 16:56:02
すみません、教えてください。XP SP3, office2000です。 各関数が参照したい変数を、Publicで初期値付き宣言したいのですが、 うまくできません。記述の方法をご存じでしたら、教えてください。 やりたいことは、 Public Dim Const hoge(5) As Integer = { 1, 5, 9, 6, 4 } もちろん上の記述はめちゃくちゃなので、通りませんが、意味合いとしては、 ・Constのhogeという整数の変数を、配列で5個確保して、 ・初期値として右のような順番で数値を代入したい。 ・しかも それら全部を1行で書きたい。 です。 宜しくお願いします
>>988 1行でも何行でも、Constで配列を宣言するのは無理
できないよ 1行で書きたい理由がわかんないけど、似たようなのが数十行あって…とかであれば、 Public Const HOGE As String = "1,2,3,4,5" と宣言、使うときは Split(HOGE)(0) これじゃ文字列型配列になっちゃうから、Array関数とかも使えるかも
定数を大量に用意したいなら、作業用のワークシートにデータを並べてロックしておくという手もある
992 :
988 :2010/04/14(水) 20:53:30
みなさん、どうもありがとうございました。よくわかりました。 C言語だと、初期値付きの宣言ができるので、同じようにやってみたところ エラーばっかり出るので、質問しました。 VBAの作法がわかっていないので、変な質問ですみませんでした。また教えてください。 Public hoge(256) As String として宣言して、 Private Sub Workbook_Open()の中で、代入することにします。 しかしPrivate Sub Workbook_Open()だと、Excelを落として起動して、落として起動して を繰り返さなければならないので、デバッグに時間がかかります。トホホ ありがとうございました。
Private Sub Workbook_Openの中身を晒しな
動画見てないけど、作れないわけない
>>992 ならクラスでやってみたらどうかな?
適当だけどこんな感じで
' クラスモジュール Class1
Private m_Hoge As Variant
Public Sub Class_Initialize()
m_Hoge = Array(1, 5, 9, 6, 4)
End Sub
Public Property Get Hoge(idx As Integer)
Hoge = m_Hoge(idx)
End Property
' 標準モジュール Module1
Sub main()
Dim fuga
Set fuga = New Class1
MsgBox fuga.Hoge(3)
End Sub
>>994 チューリングマシン、要するに今出回ってる全てのPCやソフトは絶対に実現できる
CPU・メモリをエミュレートすればいいだけだからな。
ただしものすごく遅い(Pen4・オンボで最新のネトゲやるような感じ)という条件が加わる
ついでに言うとその質問のレベルだと実現は不可能だ。諦めとけ
そうですか 安心しました
そりゃできるわな
うめ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。