Gizport
1 回答
0
Share (facebook)
203
view
全般

フォントのサイズを変更するマクロについて マクロ初心者です。エクセル...

フォントのサイズを変更するマクロについて マクロ初心者です。エクセルで「前期」というワークシートにあるkotoba_1,2と名前を付けたセルのフォントサイズを変更させるfontというマクロを組みました。しかし、実行すると「実行時エラー1004 RangeクラスのSelectメソッドが失敗しました。」と出てしまいます。いろいろ調べたのですが、何がエラーなのか良く分かりません。正しいコードを教えていただけたら嬉しいです。よろしくお願いします。
Sub font()
Dim a As Variant
c = Len(Sheets("前期").Range("kotoba_1").Value)
d = Len(Sheets("前期").Range("kotoba_2").Value)

Range(kotoba_1").Select
Select Case c
Case 1 To 119
Selection.Font.Size = 14
Case 120 To 131
Selection.Font.Size = 13
Case 132 To 137
Selection.Font.Size = 12
Case 138 To 180
Selection.Font.Size = 11
End Select

Range("kotoba_2").Select
Select Case d
Case 1 To 79
Selection.Font.Size = 14
Case 80 To 87
Selection.Font.Size = 13
Case 88 To 114
Selection.Font.Size = 12
Case 115 To 129
Selection.Font.Size = 11

End Select
Range("k1").Select

End Sub
Yahoo!知恵袋 4447日前
コメントする
お気に入り
1
質問者が選んだベストソリューション
転記ミスがあるようですが置いといて

多分、実行時に
Activesheet <> Sheets("前期")
の状態ではないでしょうか?

Sheets("前期").Select
として
Activesheet = Sheets("前期")
の状態にすれば通ると思います。

あるいはSelectせずに

With Sheets("前期").Range("kotoba_1")
Select Case c
Case 1 To 119
.Font.Size = 14
Case 120 To 131
.Font.Size = 13
Case 132 To 137
.Font.Size = 12
Case 138 To 180
.Font.Size = 11
End Select
End With

というようにすれば通ると思います。

≫≫補足
シート名を省略すると
Range("kotoba_1").Select

Activesheet.Range("kotoba_1").Select
ということになります。
ところで、定義名"kotoba_1"の実態(参照範囲)は
前期!$A$1
というようにシート名が付いているはずです。
つまり
Range("kotoba_1").Select

Activesheet.Range(”前期!$A$1").Select
というようなことで
Activesheet <> Sheet(”前期!")
の場合は他シートのセルをSelectせよと無理を言っているわけです。
Activesheet = Sheet(”前期!")
の場合は通るとおもいます。

シートをまたがって処理をするような場合は現在地を気にしなければいけません。
シート名をつけておけばSelectしなくても処理が可能になります。
また、処理速度も速くなります。
Yahoo!知恵袋 4446日前
シェア
 
コメントする
 

参考になったと評価
  このQ&Aは参考になりましたか?

Share (facebook)
その他の解決方法を知っていますか?
回答する
全般
70
Views
質問者が納得■補足への回答 その箇所に問題があろうことは、分かっています。 ですが、他のListBoxのコードと同じように記述していて、一部のListBoxだけ機能しないということは、コードの記述に問題があるわけではありません。 機能していない箇所はそこであっても、その要因は別の部分にあるのです。 他のコードが干渉しているのか、そもそもイベント発生の信号を受取れていないかだと思います。 ただ、先にも申し上げた通り、せめてブレークポイントを設定して、イベントが発生しているのかを確認する必要があります。 例えば、お腹が...
4362日前view70
全般
61
Views
質問者が納得状況説明も殆ど無くコードをドンと載せるのは、コードを解析してやりたい事を推測して答えろという意味ですか? 画像も的を得ていない部分を載せていたり、小さすぎて見えなかったりであまり意味が無い場合が多いし、コードだって一部だけ載せても、他のイベントコードがどうなっているかわからないため、他のコードと干渉し合う事も考えられます。 私は専属の下請けじゃありません。 業務ソフトを構築したいなら、それなりのところに頼んでください。 既に掲示板でのやりとりで解決出来る範囲では無いと思います。 --- 今後、リクエ...
4376日前view61
全般
72
Views
質問者が納得90人以上が見ても回答が無いのは、回答者に答えるスキルが不足しているのでは無く、ご質問の文章や表現などに問題があると考えた事はありませんか? 「まったく状況や内容を知らない人が読む」という観点で質問を読み返してみて下さい。果たして何人の人が望んでいる事を理解出来るでしょうか? 見ていない人に文章で伝えるのはかなり大変なことですし、特に文字数制限がある掲示板では尚更です。込み入った内容の質問であればあるほど伝えるのは容易ではありません。書いてもらったコードをコピペで載せるのではなく、読む人の環境で再現させ...
4409日前view72
全般
71
Views
質問者が納得何度かご質問にお答えした記憶はありますが、内容はまったく覚えてません。 質問歴を拝見すると同じようなソートの質問を何度かされているよう見受けられますが、コピペで動かないとまったく応用できないという事でしょうか? ロジック的にどうかなという気持ちもありますが、サンプルコードを UserForm_Initialize の End Select と End With の間に追加したら、とりあえず画像のようになりました。 '---省略--- End Select '----サンプル ここから--- i = 0...
4409日前view71
全般
71
Views
質問者が納得補足 そこまで、できてるのでしたら、あとは、goldswallow_stageさんの示したコードを多次元配列に応用するだけでソートできるかと思います。 Variant型の変数(今回は「範囲」という名前にしました)に対して、セル範囲をセットすると、(↓この行です) 範囲 = ws.Range("A4:D" & ws.Range("B" & Rows.Count).End(xlUp).Row) 範囲=セルA4:Dα範囲(αは入力済みのセル数)となるわけ...
4410日前view71

関連製品のQ&A