エクセル テキスト追加マクロで”実行時エラー”発生

保護されたスケジュール表の上へ、マクロでテキストボックスを追加しようとしてます。
別マクロで行挿入マクロがありますが、これを実行した後にテキスト追加マクロを実行すると
実行時エラー'2147024809(80070057)':選択した図形はロックされています。
が表示されます。
これを解決する方法をご教授ください。
追加されたテキストボックスは、位置変更とテキスト編集ができるようにしたいと思います。


◇行挿入◇
Sub 行挿入()
With ActiveSheet
.Protect Password:="Pass", UserInterfaceonly:=True
'処理
End With
End Sub

◇テキストボックス追加◇
Sub テキスト追加()
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
Selection.Left + 3, Selection.Top + Selection.Height - 11, _
50#, 12#).Select
End Sub

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>行挿入マクロ実行後にセル保護ロックが解除されてしまいます。



ご質問の症状が,よく判りません。

いずれにせよ元のご質問の「編集可能なテキストボックスを追加するマクロ」とは,無関係なところで起きている問題のように見受けられます。
最新版のマクロと,いま困っている「具体的な症状(目に見えるエクセルの姿,どこ番地のセルに何をしたら,どの設定がどうなったといった)」について情報を添えて,新たなご相談として投稿し直してください。
    • good
    • 0
この回答へのお礼

症状を画像添付で再投稿させていただきます。
宜しくお願いいたします。

お礼日時:2010/05/29 22:57

アプローチは色々ありますが,


>追加されたテキストボックスは、位置変更とテキスト編集ができるようにしたいと思います。

という事ですから,シートの保護の設定から見直した方が良いのかもしれませんね。


変更前;
Sub 行挿入()
With ActiveSheet
.Protect Password:="Pass", UserInterfaceonly:=True
 :

変更後:
Sub 行挿入()
With ActiveSheet
.Protect Password:="Pass", DrawingObjects:=false, UserInterfaceonly:=True
 :

この回答への補足

keithinさん
ご回答、ありがとうございます。
テキストボックスの位置変更とテキスト編集ができるようになりましたが、
行挿入マクロ実行後にセル保護ロックが解除されてしまいます。
回避できないでしょうか?

補足日時:2010/05/29 19:55
    • good
    • 0

それはテキストボックスを配置した際、Selectするからエラーになるのです。


以下のようにしましょう。

Sub テキスト追加()
ActiveSheet.Shapes.AddTextbox msoTextOrientationHorizontal, _
Selection.Left + 3, Selection.Top + Selection.Height - 11, _
50#, 12#
End Sub

この回答への補足

Kyboさん
早速のご回答、ありがとうございます。
エラーにならずにテキスト追加されましたが、
行挿入マクロを実行させた後は、テキストの書き込みと移動が出来ない状態です。
出来るようにしたいのですが、ご存知でしょうか。

補足日時:2010/05/29 17:44
    • good
    • 0
この回答へのお礼

症状をお伝えし難いので画像添付で再投稿させていただきたく思います。
一方的で申し訳ございません。ありがとうございました。

お礼日時:2010/05/29 23:01

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

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

Qmultiple definitionというエラー

現在Ubuntu LinuxのgccでC言語のプログラムをやっています。

https://sourceforge.jp/projects/cc1101driver/scm/svn/blobs/2452/trunk/20140411/code.h

このツリーのcode.hに ”const sig_code2_t PVC_TCP_SIG_CODE[100] = {” というコードを追加してmakeを行うと次のようなエラーが出て実行ファイルが出力されません。



(エラー内容)

---------------(中略)-----------------
gcc -o exe main.o event.o env.o audio.o task.o comm.o menu_show_status.o mount.o net.o misc.o -lpthread
event.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
env.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
audio.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
task.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
comm.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
mount.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
net.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
misc.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
collect2: error: ld returned 1 exit status
make: *** [exe] Error 1






この const sig_code2_t PVC_TCP_SIG_CODE[100] = {をコメントアウト正常にビルドできるのですが、




この問題を解決するにはどうすれば良いのかご教示頂きますようお願い致します。

現在Ubuntu LinuxのgccでC言語のプログラムをやっています。

https://sourceforge.jp/projects/cc1101driver/scm/svn/blobs/2452/trunk/20140411/code.h

このツリーのcode.hに ”const sig_code2_t PVC_TCP_SIG_CODE[100] = {” というコードを追加してmakeを行うと次のようなエラーが出て実行ファイルが出力されません。



(エラー内容)

---------------(中略)-----------------
gcc -o exe main.o event.o env.o audio.o task.o comm.o menu_show_status.o mount.o net.o misc.o -lpthread
event.o:(.rodat...続きを読む

Aベストアンサー

お約束の「ヘッダに実体を定義してはいけない」ってヤツです。

code.hに記述した内容はall_includes.hに適用されます。
all_includes.h内で#include "code.h"していますからね。

で、all_includes.hの内容はそれぞれ
audio.c、comm.c、env.c、event.c、main.c、misc.c、mount.c、net.c、task.cに適用されます。
つまり、code.hに記述した内容も
audio.c、comm.c、env.c、event.c、main.c、misc.c、mount.c、net.c、task.cに適用されます。
それぞれのオブジェクトファイルにPVC_TCP_SIG_CODE[100]が存在します。

リンクする段階でどのオブジェクトファイルのPVC_TCP_SIG_CODE[100]を使用したらいいのでしょうか?????
というエラーです。

extern宣言して、実体をどこかのソースファイルのみに記述する。
というのが一般的な対処方法です。
# static宣言にすればとりあえずリンクは通るかもしれませんが…無駄が出ますねぇ。
# 今回はconstなので、メモリに無駄が出るだけ…で済むかと思われますが。
http://d.hatena.ne.jp/saitodevel01/20110321/1300685958

お約束の「ヘッダに実体を定義してはいけない」ってヤツです。

code.hに記述した内容はall_includes.hに適用されます。
all_includes.h内で#include "code.h"していますからね。

で、all_includes.hの内容はそれぞれ
audio.c、comm.c、env.c、event.c、main.c、misc.c、mount.c、net.c、task.cに適用されます。
つまり、code.hに記述した内容も
audio.c、comm.c、env.c、event.c、main.c、misc.c、mount.c、net.c、task.cに適用されます。
それぞれのオブジェクトファイルにPVC_TCP_SIG_CODE[100]が存在します。...続きを読む

Qエクセル マクロ実行時エラー’1004’

For~Next構文内でシートコピーしていると途中で、
実行時エラー'1004’
WorksheetクラスのCopyメソッドが失敗しました。
が表示されることがあります。

該当のFor~Next文は10回以上実行されているので、コードの誤りではないと思うのですが、なぜ「Copyメソッドが失敗」するのかわかりません。
理由/対処方法がわかればありがたいと思い質問させていただきます。

**該当コード**
Sub 評価シート作成()
  Sheets(社員一覧).Select
  行 = 1
  Do
    ReDim Preserve 社員CD(行)
    ReDim Preserve 氏名(行)
    社員CD(行) = Cells(行 + 1, 1).Value
    氏名(行) = Cells(行 + 1, 2).Value
    行 = 行 + 1
  Loop Until Cells(行, 1) = ""
  人数 = 行 - 2
  For 回数 = 1 To 人数
    Sheets(評価シート).Select
    Sheets(評価シート).Copy after:=Sheets(評価シート)
    ActiveSheet.Name = 氏名(回数)
    Cells(4, 5) = 氏名(回数)
    Cells(4, 3) = 社員CD(回数)
  Next 回数
End Sub
*****************************
よろしくお願いします

For~Next構文内でシートコピーしていると途中で、
実行時エラー'1004’
WorksheetクラスのCopyメソッドが失敗しました。
が表示されることがあります。

該当のFor~Next文は10回以上実行されているので、コードの誤りではないと思うのですが、なぜ「Copyメソッドが失敗」するのかわかりません。
理由/対処方法がわかればありがたいと思い質問させていただきます。

**該当コード**
Sub 評価シート作成()
  Sheets(社員一覧).Select
  行 = 1
  Do
    ReDim Preserve 社員CD(行)
   ...続きを読む

Aベストアンサー

ひょっとしてこれに該当するのかな?

Excel でプログラムを使用してワークシートをコピーするとランタイム エラー 1004 が発生する
http://support.microsoft.com/kb/210684/ja

Qbear the definitions

bear the definitions
という場合、このbearはどういう訳となるのでしょうか?


Bold and capitalized terms not defined herein bear the definitions in the Competition Packet.
という文で使われていました。

「ここで定義していない太字と大文字表記は、Competition Packetに定義されている」という意味でしょうか?

Aベストアンサー

yes

QExcel VBAマクロで実行時エラー'91'が出てしまいます。

実行時エラー'91'
オブジェクト変数またはWithブロック変数が設定されていません
というエラーが出ます

同じような質問をいくつか見つけました。
FindでTRUEが見つからなくなったときの処理が問題?だと思うんですが、それを解決するために、どうしていいか分かりません。
よろしくお願いします。


AL列にTRUEとある行を削除するマクロです。
処理が正常に終わり、最後にエラーが出ます。

Sub 行削除()
lastrow = Range("AL1").End(xlDown).Row
i = 1
Dim trow As String
Do While i < lastrow
trow = Range("AL:AL").Find(What:="TRUE").Row
Rows(trow).Delete
i = i + 1
Loop
End Sub

Aベストアンサー

こんにちは。

そのままのマクロでは、Error トラップを設けないと離脱できないはずです。そのマクロの場合は、エラーは避けられないです。
理由は、
trow = Range("AL:AL").Find(What:="TRUE").Row
で、見つからなかったときの判定が出来ないからです。Error トラップをしない方法では、

たぶん、以下のようにすれば良いと思います。
'------------------------------------------
Sub 行削除()
Dim trow As Range
  Do
    Set trow = Range("AL:AL").Find(What:="TRUE", LookIn:=xlValues)
    If trow Is Nothing Then Exit Sub
    Rows(trow.Row).Delete
  Loop
End Sub
'--------------------------------------

なお、このようなマクロは、オートフィルタを用い、SpecialCells で、可視行のみを選択して削除するのが一般的です。

こんにちは。

そのままのマクロでは、Error トラップを設けないと離脱できないはずです。そのマクロの場合は、エラーは避けられないです。
理由は、
trow = Range("AL:AL").Find(What:="TRUE").Row
で、見つからなかったときの判定が出来ないからです。Error トラップをしない方法では、

たぶん、以下のようにすれば良いと思います。
'------------------------------------------
Sub 行削除()
Dim trow As Range
  Do
    Set trow = Range("AL:AL").Find(What:="TRUE", LookIn:=xlValues)
...続きを読む

Qウィンドウズのアップデートで10月20日に、Definition Up

ウィンドウズのアップデートで10月20日に、Definition Update for wWindows Defender-KB015597(Definition 1.93.26.0)が2回インストールされましたが、そのあとにもう一つ「更新プログラムをインストールしています(50パーセント完了)」とありますが、今日で3日連続表示され、インストールが進みません。なにか解決方法はないでしょうか?PCは初心者クラスです。よろしくお願いします。

Aベストアンサー

>今日で3日連続表示され、インストールが進みません。
ちょっと状況がつかめません。
毎日の起動時に同じ内容が表示されることが3回続いた、ということでしょうか。それとも、72時間の間ずっと「(50パーセント完了)」の状態なのでしょうか。

前者なら
http://menushowdelay.blog13.fc2.com/blog-entry-523.html
とその中のリンクを。
後者なら、とりあえず再起動しましょう。

Q【Excel】◇再質問◇スケジュール表 進捗率入力で帯描写するマクロ

【Excel】◇再質問◇スケジュール表 進捗率入力で帯描写するマクロ
お世話になります。Excel2007使用です。
以前、質問番号:5949136で質問し、解決できました。ありがとうございました。
スケジュール表を使用する中で欲が出て、土日祝日を取り除いたカレンダーに
進捗率の数字を記入すると自動で帯を引くようにしたく思います。
どのようなマクロになるでしょうか
日数と6/15からのカレンダーは関数で出しています。

Aベストアンサー

帯である図形の左端位置,つまり開始列(開始セル)を開始の日付を元に求めること。
帯である図形の100%の全幅,つまり終了日である列(セル)の右隣のセル位置を終了の日付を元に求めること。

の2点を今お手元で出来ている内容不明のマクロに組み込めば,できます。

開始の日付と終了の日付が「絶対に土日にかからない」ようになっている保証があるのか,もし無いならどうしたいのかなど,具体的な状況が不明です。とりあえずご自分で少し努力してマクロに手を入れてみて,その上で「ここができない判らない」箇所を具体的にして改めてご相談を投稿なさってみたらどうでしょう。

QOn Error GoTo でエラーが発生する

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1

ErrorTrap1:

On Error GoTo 0

   Do
   On Error GoTo ErrorTrap2
      '-エラーの発生するコード 2
   On Error GoTo 0
   Loop

ErrorTrap2:

End Sub

しかし、以下のようにSubで二つに分けるとエラーは出ません。

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1

ErrorTrap1:

On Error GoTo 0

Call Macro2

End Sub
Sub Macro2()

    Do
     On Error GoTo ErrorTrap2
      '-エラーの発生するコード 2
    On Error GoTo 0
    Loop

  ErrorTrap2:

End Sub

「On Error GoTo 0」がうまく解除できていないのかと思い、いろいろ試してみました。
しかし、どういった理由かはわかりませんでした。
「On Error GoTo」は、Subでは、ひとつしか使えないのでしょうか。

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1

ErrorTrap1:

On Error GoTo 0

   Do
   On Error GoTo ErrorTrap2
      '-エラーの発生するコード 2
   On Error GoTo 0
   Loop

ErrorTrap2:

End Sub

しかし、以下のようにSubで二つに分けるとエラーは出ません。

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1

ErrorTrap1:

On Error GoTo 0

Call Macro2

End Sub
Sub Macro2()

    Do
     On Error G...続きを読む

Aベストアンサー

エラー処理の中でOn Error GoToを記述することはできません。


エラー処理の基本的な構造は、

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1
On Error GoTo 0

Exit Sub

ErrorTrap1:
  'エラー処理
  Resume Next

End Sub


エラー処理が2つある場合は、

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1
On Error GoTo 0

Do
  On Error GoTo ErrorTrap2
    '-エラーの発生するコード 2
  On Error GoTo 0
Loop

Exit Sub

ErrorTrap1:
  'エラー処理1
  Resume Next

ErrorTrap2:
  'エラー処理2
  Resume Next

End Sub


Resume Next でエラーが発生した行の次の行から再開します。
Resumeには他の構文もありますので、調べてみてください。

エラー処理の中でOn Error GoToを記述することはできません。


エラー処理の基本的な構造は、

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1
On Error GoTo 0

Exit Sub

ErrorTrap1:
  'エラー処理
  Resume Next

End Sub


エラー処理が2つある場合は、

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1
On Error GoTo 0

Do
  On Error GoTo ErrorTrap2
    '-エラーの発生するコード 2
  On Error GoTo 0
Loop

Exit Sub

...続きを読む

Qエクセル/マクロ Exit Subが実行されない

エクセルマクロの質問です。エクセルのヴァージョンは2000です。
あるシートをコピーして新シートに任意の名前を付けるマクロを作っています。ユーザーフォームの中に一つのテキストボックス(新シートの名前入力用)と二つのコマンドボタンを設置し一つは実行ボタン、もう一つはキャンセルボタンとしました。
QNo.6367227でエラー処理に関する質問をさせていただきましたが、こちらは見事に解決していただきました。

今回の質問はExit Subに関する質問です。
If構文で、条件文1が真であればシートをコピーして名前を変更、フォームを閉じるという処理を目指しています。
If 条件 Then ~ 処理 Exit Sub
という形を作って試してみたのですが、処理後にExit Subが実行されません。Exit Subの前にメッセージボックスを挿むとメッセージは表示されましたが、やはりExit Subにはたどり着けませんでした。

すごく初歩的な事で恥ずかしいのですが、Exit Subが実行されない理由と解決法をご教示いただけると助かります。よろしくお願いします。

Private Sub CommandButton1_Click()

Dim NewSheetName As String
NewSheetName = TextBox1.Value

On Error Resume Next
Sheets("Summary").Name = NewSheetName
If Err.Number = 0 Then
Sheets(NewSheetName).Copy before:=Sheets(NewSheetName)
ActiveSheet.Name = "Summary"

MsgBox ("Task Completed!")
ExitSub

Else
MsgBox "Invalid name!"
End If
On Error GoTo 0

End Sub

エクセルマクロの質問です。エクセルのヴァージョンは2000です。
あるシートをコピーして新シートに任意の名前を付けるマクロを作っています。ユーザーフォームの中に一つのテキストボックス(新シートの名前入力用)と二つのコマンドボタンを設置し一つは実行ボタン、もう一つはキャンセルボタンとしました。
QNo.6367227でエラー処理に関する質問をさせていただきましたが、こちらは見事に解決していただきました。

今回の質問はExit Subに関する質問です。
If構文で、条件文1が真であればシートをコピーして...続きを読む

Aベストアンサー

こんな感じでどうでしょう。

Private Sub CommandButton1_Click()
Dim Ws As Worksheet

Set Ws = Worksheets("Summary")
On Error GoTo ErrorMessage
Ws.Name = TextBox1.Value
On Error GoTo 0
Ws.Name = "Summary"
Ws.Copy After:=Ws
ActiveSheet.Name = TextBox1.Value
MsgBox "Task Completed!"
Exit Sub

ErrorMessage:
MsgBox "Invalid name!"
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

CommandButton2はキャンセルボタンというより終了ボタンになります。
「Unload Me」でユーザーフォームを終了します。
CommandButton1でユーザーフォームを終了させてもよいのですが、シートを複数回コピーする場合を考えると、終了ボタンで終了させた方がよいと思います。

こんな感じでどうでしょう。

Private Sub CommandButton1_Click()
Dim Ws As Worksheet

Set Ws = Worksheets("Summary")
On Error GoTo ErrorMessage
Ws.Name = TextBox1.Value
On Error GoTo 0
Ws.Name = "Summary"
Ws.Copy After:=Ws
ActiveSheet.Name = TextBox1.Value
MsgBox "Task Completed!"
Exit Sub

ErrorMessage:
MsgBox "Invalid name!"
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

CommandButton2はキャンセルボタ...続きを読む

Qステレオミキサーの「realtek high definition a

ステレオミキサーの「realtek high definition audio 6.0.1.5490」より新しいバージョンのものはありますか?更新したいので。

Aベストアンサー

こんばんは。

現状ですと、[R2.47]の"6.0.1.6083"が最新のようです。
RealtekのOHPからダウンロードできます。
http://www.realtek.com.tw/downloads/downloadsCheck.aspx?Langid=4&PNid=24&PFid=24&Level=4&Conn=3&DownTypeID=3&GetDown=false

QExcelの列'A' 'B' 'C'...や、行'1' '2' '3'...の文字の大きさや種類

Excel2002を使っていますが、Excelの上にある列'A' 'B' 'C'...や、左にある行'1' '2' '3'...の文字の大きさや種類は変えることはできるのでしょうか?もし、変えれるのでしたらどうやって変えるのですか?

Aベストアンサー

「書式」「スタイル」「標準」の状態で「変更」を押して「フォント」の内容を変更してください。
列と行の文字フォントとサイズが変更されます。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング