- ベストアンサー
エクセルVBAで
いつもお世話になります。 濁点・半濁点の文字を普通?の文字として認識させることは出来ますでしょうか? 例 A1 じ A2 し IF A1=A2 then ~ と使いたいのですが、「じ」=「し」としたいということです。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- mousengoke
- ベストアンサー率50% (197/388)
関連するQ&A
- エクセルVBAについて
お世話になりなります。 以下のように条件が合わない場合、何もせずにNの値を増やして同じくIF文で判断する場合 ***にどのように書けばいいのでしょうか? よろしくお願いします。 Sub ボタン1_Click() Dim a As String For n = 1 To 30 a = Cells(n, 1) aa = Left(a, 1) aaa = Val(aa) If aaa = "" Then *** If aaa <= cha(30) Then *** If aaa >= cha(40) Then *** Else Cells(n, 3) = a Next End Sub
- ベストアンサー
- その他(プログラミング・開発)
- ExcelのVBAで高さの設定
どなたか教えて下さい。 報告書のフォーマットの作成をしています。 A列からE列までは日付や名前等の内容が入力されています。 F列にはそれに関するコメントが入力されています。 コメントの文字数は、少なければ10字程度、多ければ320文字程度あります。 文字数に合わせて高さを変更させたいです。 その為、以下のような事を行いました。 (1)G列にLEN関数を用いて、文字数を表示 (2)G列の文字数によって高さを変更させるVBAを作成 Sub Macro1() For i = 2 To 100 If Cells(i, 6) < 72 Then Rows(i).RowHeight = 80 ElseIf 73 < Cells(i, 6) < 108 Then Rows(i).RowHeight = 120 ElseIf 109 < Cells(i, 6) < 144 Then Rows(i).RowHeight = 160 ElseIf 145 < Cells(i, 6) < 180 Then Rows(i).RowHeight = 200 ElseIf 181 < Cells(i, 6) < 216 Then Rows(i).RowHeight = 240 ElseIf 217 < Cells(i, 6) < 252 Then Rows(i).RowHeight = 280 ElseIf 253 < Cells(i, 6) < 288 Then Rows(i).RowHeight = 320 ElseIf 289 < Cells(i, 6) < 324 Then Rows(i).RowHeight = 360 End If Next End Sub このVBAに記述間違いがあるようで、 「文字数が72文字以内であれば、高さを80に変更。 文字数が73文字以上で108文字未満であれば、高さは120」 までは認識し・高さの設定を行ってくれますが、108文字以上あっても高さは120になってしまいます。 どなたか教えて下さい。 よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAで
マクロにて ==================== If ws.Name <> "A" Then For i = 8 To 26 Step 2 ==================== 前後省略 ws=ワークシートです こんなコードを「いただいて」使用してましたが このたびB,Cとワークシートが増えてしまいました で、If ws.Name <> "A""B""C" Then とか If ws.Name <> ("A""B""C") Thenとか やってみましたが駄目でした(ToT) どう記述すれば3つ「以外」のコードに なりますか?素人なりに考えたのですが・・・・ 教えてください
- ベストアンサー
- オフィス系ソフト
- VBAの変数
いつもお世話になるます。 エクセルvbaでaを変数にしたとき 例 private sub text1() a=inputbox("数字入力") end sub private sub text2() if a=777 then ・・・ みたいなことをしたいのですが、private subが違うと、変数も別物になるようです。どんなprivate subでも共通で使える変数を使うにはどうすればいいのでしょうか? 宜しくお願いします。
- 締切済み
- Visual Basic
- エクセルのオートフィルターがかかっていたら消すVBA
いつもお世話になっております。 作業が終了して全てのシートを初期化する場合に、オートフィルターで抽出した状態でデータを消すと、隠れていた部分が残ってしまいます。 もし、そのシートのA1~D1までにフィルターがかかっていたら、フィルターを消す、かかっていなければ、そのままシート全体のデータを消すというマクロはどう書けばよろしいのでしょうか? -例- Sheets("ABC").Select If Range(Cells(1,1),Cells(1,4))にフィルターがかかっていたらThen フィルターを消す Cells.ClearContents Else Cells.ClearContents End If こんなことをしたいのですが、伝わりましたでしょうか? よろしくご指南くださいませ。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAで
お世話になります。 エクセルVBAで簡易プログラムを作成しています。 その中でユーザーフォームを作り、チェックボックスで 6項目からどれか一つ選択する様な仕組みを作っています。 利用者が二つ以上選択(チェック)出来ない様にしたいの ですが、どの様にすれば良いでしょうか。 ちなみに今の記述は下記の様になります。 ご教授下さいます様、宜しくお願い致します。 記 If CheckBox1 = False Then If CheckBox2 = False Then If CheckBox3 = False Then If CheckBox4 = False Then If CheckBox5 = False Then If CheckBox6 = False Then MsgBox "どれか選択して下さい!" GoTo err_jmp Else: mytoki = "3年前から" End If Else: mytoki = "2年前から" End If Else: mytoki = "1年前から" End If Else: mytoki = "半年前から" End If Else: mytoki = "1週間前から" End If Else: mytoki = "昨日から" End If
- ベストアンサー
- Visual Basic
- エクセルVBA
A列を基準にBC列が空白ならAの数値を入れて、A>BならB列を更新、A<CならC列を更新 A列が数値以外ならその行をスキップ、という処理をしたいのですが Option Explicit Dim A As Range, B As Range, C As Range Dim i As Long Sub test() For i = 1 To 10 Set A = Cells(i, 1) Set B = A.Offset(0, 1) Set C = A.Offset(0, 2) If IsNumeric(A) Then Else Exit Sub End If If B.Value = "" Then B.Value = A.Value If C.Value = "" Then C.Value = A.Value If A.Value > B.Value Then B.Value = A.Value If A.Value < C.Value Then C.Value = A.Value Next i End Sub とすると数値以外の行の時点で停止してしまいます。 その行を飛ばして次の行に進むにはどうしたらいいのでしょうか?
- ベストアンサー
- Visual Basic
- エクセルVBAでお願いします。
エクセル2002使用です。 セルA1に 日付型で2004/9/25と間違いなく入っています。 その条件で下記のようにコードを打ちました。 Sub test() If Day(Range("A1")) = 30 Then MsgBox "yes" End If End Sub 25=30ならばmsgboxを表示なので、上記の例では表示してはいけないのに表示されます。 ちなみに=を<>不等号にしてもMsgboxが開きます。 おそらく型の問題だと思ったのですが、DAY関数はVariant型のintergerなので問題ないと思うのですが、理由がわかりません。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBAでのシート選択について
いつもお世話になります。 VBA初心者で、基本的な質問をしているかもしれませんが、 どうかお付き合いください;; たとえば、以下のようなコードがあったとします。 例) Function Sample() dim x As Integer dim y As Integer x=10 y=100 If x > sheets("シート2").Range("A1") AND y < sheets("シート2").Range("A1") Then 処理 End If End Function 例えば上記のコードのようなものがあったとして、 シート名を省いて文字数を減らす方法はあるでしょうか? 1つのFunction内では「このシート」しか参照しないというような指定が出来ると、 If x > Range("A1") AND y < Range("A1") Then というように簡単にできますよね? 他のFunctionでは、シートの指定はさせたくないので、 End Functionの手前で、「シート指定終了」というのを 記述できればベストなのですが…。 どうかよろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- Excel VBAを簡素化したいのですが動きません
お世話になります。VBA初心者です。 下記TESTは動くのですが、『If myINT= Then』が永遠に続くので簡素化したく 『Rows("myINT : myINT").Select』これを入れてみたのですが全く動きません。 簡素化した記述を教えて下さい。宜しくお願い致します。 Sub TEST() Dim myINT As Integer myINT = ActiveSheet.Cells.SpecialCells(xlLastCell).Row If myINT = 1 Then Rows("1:1").Select ElseIf myINT = 2 Then Rows("2:2").Select ElseIf myINT = 3 Then Rows("3:3").Select Else MsgBox "TEST" End If End Sub
- ベストアンサー
- その他(業務ソフトウェア)
補足
早速の回答有難うございます。 これどうやって使うんですか?(TT) Sub test() Function MyStrConv(ByVal s As String) As String MyStrConv = Left(StrConv(StrConv(s, vbKatakana), vbNarrow), 1) End Function If (MyStrConv(Range("A1"))) = (MyStrConv(Range("A2"))) Then MsgBox "ok" Else MsgBox "ng" End If End Sub で、試したんですけど、できません。(><) 補足お願いします。