システムwiki

Excelでのpersonal.xlsbの問題

DonBarr 解決済 最終更新日:2020-08-19 22:30

personal.xlsbファイルに2つのマクロがあります.それらの1つは、割り当てられたキーストロークで常に正常に動作し、Excelは、必要に応じてこのマクロを実行した後に完全に動作します.

ただし、他のマクロを実行すると、キーストロークを使用できなくなり、alt-f8マクロリストから実行する必要があります.

このマクロが正常に実行された後、Excelを再び開くと必ずBook2が開きます.その後、Excelを閉じて再び開くと、book3が開かれます.

問題のあるマクロは、alt-d、lでうまくコンパイルされます.

Excelを通常の状態にリセットする唯一の方法は、バックグラウンドプロセスを削除するか、タスクを終了することです.これは、おそらく同じことです.その後、このマクロを再度実行するまでExcelは正常に動作します.

これを引き起こす可能性のあるVBAコードには何がありますか?

Windows 10でOffice 365を実行しています.私はスクリーンリーダーを使用し、視覚障害のためにキーボードからすべてを行うため、マウスを使用できません.

私のグーグルと質問はすべて無駄です.私はコードで馬鹿げた初心者のことをやっていると想像しますが、どちらのマクロも完全に機能します.Excelを妨害するものでも、私が言うように、そのキーボードショートカットは機能しません.

このグループの知恵に深く感謝します.

どうもありがとう.

ドンバレット

返信リスト(回答:11)

1 #
Andreas

マクロを見せてください.

アンドレアス.

応答1# ->にスキップ
2 #
DonBarr

Andreasに感謝します.以下は、マクロの.basエクスポートです.

属性VB_Name="BreakBest"

明示的なオプション

Sub BreakBest()

属性BreakBest.VB_Description="購入リスト全体を最高のもので並べ替え"

属性BreakBest.VB_ProcData.VB_Invoke_Func="J\n14"

'

'DeleteAllRowsマクロ

'は、すべての空白行を削除し、株価を株価順に並べ替えます

'

'キーボードショートカット:Ctrl + Shift + J

'

Application.ScreenUpdating=False

Dim numrow As Long

MyRangeを範囲として暗くする

Dim iCounterをできるだけ長く

Dim lsort As Long

範囲として薄暗くする

Set MyRange=ActiveSheet.UsedRange

For iCounter=MyRange.Rows.Count To 1 Step-1

If Application.CountA(Rows(iCounter).EntireRow)= 0 Then

Rows(iCounter).Delete

終了の場合

次のiCounter

ストックを設定= Cells.Find( "Conservative")

在庫がない場合、それでは何もありません

Cells.Find(What:= "Conservative"、After:= ActiveCell、LookIn:= xlFormulas、_

LookAt:= xlPart、SearchOrder:= xlByRows、SearchDirection:= xlNext、_

MatchCase:= False、SearchFormat:= False).Activate

Selection.EntireRow.Delete

終了の場合

ストックを設定= Cells.Find( "Aggressive")

在庫がない場合、それでは何もありません

Cells.Find(What:= "Aggressive"、After:= ActiveCell、LookIn:= xlFormulas、_

LookAt:= xlPart、SearchOrder:= xlByRows、SearchDirection:= xlNext、_

MatchCase:= False、SearchFormat:= False).Activate

Selection.EntireRow.Delete

Selection.EntireRow.Delete

終了の場合

ストックを設定= Cells.Find( "Aggressive")

在庫がない場合、それでは何もありません

Cells.Find(What:= "Aggressive"、After:= ActiveCell、LookIn:= xlFormulas、_

LookAt:= xlPart、SearchOrder:= xlByRows、SearchDirection:= xlNext、_

MatchCase:= False、SearchFormat:= False).Activate

Selection.EntireRow.Delete

Selection.EntireRow.Delete

終了の場合

Set MyRange=ActiveSheet.UsedRange

numrow=MyRange.Rows.Count

Application.Goto Reference:= "R1C16"

ActiveCell.Value=numrow

Application.Goto Reference:= "R2C11"

Selection.NumberFormat="#、## 0.00"

ActiveCell.FormulaR1C1="= RC [-4]/(DATEDIF(RC [-6]、(TODAY()+ 1)、" "d" "))* 1000"

Selection.Copy

Range(Cells(2、11)、Cells(numrow、11)).Select

ActiveSheet.Paste

Application.CutCopyMode=False

ActiveWorkbook.Worksheets( "breakthrough-buy-list").Sort.SortFields.Clear

ActiveWorkbook.Worksheets( "breakthrough-buy-list").Sort.SortFields.Add2 Key _

:= Range( "K2")、SortOn:= xlSortOnValues、Order:= xlDescending、DataOption:= _

xlSortNormal

ActiveWorkbook.Worksheets( "breakthrough-buy-list").Sortを使用

.SetRange Range( "A2:K40")

.Header=xlNo

.MatchCase=False

.Orientation=xlTopToBottom

.SortMethod=xlPinYin

.適用

次で終わる

Application.Goto Reference:= "R1C11"

ActiveCell.FormulaR1C1="最高"

Application.Goto Reference:= "R1C1"

ActiveWorkbook.Names.Add Name:= "Title"、RefersToR1C1:= _

"= breakthrough-buy-list!R1C1"

ActiveWorkbook.Names( "Title").comment=""

ActiveWorkbook.Save

End Sub

応答2# ->にスキップ
3 #
Andreas

こんにちはドン、

下記のコードを試してください.問題解決済み?

andreas.

SUB BREASBEST()
'' DeleteAllRowsマクロ



''キーボードショートカット:Ctrl + Shift + J
' MyRange As Range
DIM ICounter range as Rake as Range and forse
myrange= activeSheet.UsedRange


ICounter= myRange.rows.Countを設定します.1ステップ-1
application.counta(行(ICounter).EntireRow)= 0




次の場合
Stock= Cells.Find( "保守的"、 lookat:xlpart)
在庫がない場合は、Stock.Entirerow.Delete
stock= cells.find( "Aggressive")
在庫が含まれていない場合は、Stock.Entirerow.Delete
myRange=範囲( "A1").CurrentRegion
範囲( "p1")= myrange.rows.count
範囲( "k1")= "Best"
範囲( "k2"、範囲( "k"&myrange.rows.count)))
.NumberFormat= "## 0.00"
.formular1c1= "= rc [-4]/(Datedif(RC [-6]、(今日) ()+1)、 "" D ")* 1000" ""

myrange.sort範囲( "k1")、XlDescending、ヘッドで終わりますER:= XLEES
ActiveWorkbook.Names.ADD名:= "title"、referstor1c1:= "= breakthrough-buy-list!r1c1" "
ActiveWorkbook.Names(" title ").comment=""
ActiveWorkbook.Save
application.ScreenUpdating= true
end sub

応答2# ->にスキップ
4 #
DonBarr

コードは非常にクリーンなようです.初期の問題を抱えているのは私が間違ったことについて簡単に助言することができますか?

グラフィックがここに貼り付けられているかどうかわからない.すみません、スクリーンショットのグラフィックを貼り付ける方法はわかりません.

応答4# ->にスキップ
5 #
Andreas

スクリーンショットはこの場合、十分ではありません.

あなたのファイルを見てもらえますか?

andreas.

応答5# ->にスキップ
6 #
DonBarr

はい、メールを送っていただければ

ドン

応答6# ->にスキップ
7 #
DonBarr

私はどこかに投稿された場合に変更された株の名前でダミーファイルをアップロードしたいです.私の人生を保存するためのアップロードボタンが見つかりません.どうやって表示されますか?どうもありがとう!

応答6# ->にスキップ
8 #
Andreas

ここにファイルをアップロードしてください.ファイルを表示できるのは私だけです.

https://www.dropbox.com/request/PTPFz9tT43hCtSy4War7

a>

アンドレアス.

応答8# ->にスキップ
9 #
DonBarr
ファイルがアップロードされました.ちなみに、古いマクロで試行錯誤しましたが、Excelの誤動作を引き起こすコードは、セルa1の名前をTitleに定義するコードの最後の方にあるようです.Andreasに感謝します.
応答9# ->にスキップ
10 #
Andreas

CSVファイルをアップロードしました...

CSVファイルをインポートすると、Excelファイルと結果が異なるため、インポートできません.

いつものようにこのCSVファイルをインポートします
シートをコピーしてデータを目的の結果に変更します
そのExcelファイルをドロップボックスにアップロードします

アンドレアス.

11 #
Andreas 1

こんにちはドン、

下記のコードを試してください.どうなりますか?

andreas.

sub breakbest()
範囲として、AS範囲として
'






これは範囲内( "b1"、 "b"&rows.count)です.end(xlup))
isEmpty(これで)
すべてが何もない場合はall=このall erse set all= une(all、this)
次の場合
次の
2ndヘッダ
範囲内( "A3"、範囲( "A"&rows.count).end(xlup))
strcomp(これ、 "シンボル"、vbtextcompare)= 0<>
すべてが何もない場合は、all=このalteを設定します.all= UNION(all、これ)

次の行を削除するBR>'すべてのデータ( "A1")を参照してください( "a1")currentRegion "range(" k1 ")="best "
setこの=範囲(" k2 ")を設定します.サイズ変更(.ROWS.COUNT-1)
この
FORMULAR1C1= "= RC [-4]/(Datedif(RC [-6]、(今日()+ 1)、" D "")* 1000 ""
.NumberFormat= "0.00"



.currentRegion
.sortレンジ( "k1")、xldescending 、ヘッダー:= xlyes
'' clean up
.replace vbcrlf、 "" "".entirerow.autofit
.entirecolumn.autofit

.NAME= "title"




end sub